Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
Namespaces | Macros | Functions
algorithm.cpp File Reference
#include "shamalgs/details/algorithm/algorithm.hpp"
#include "shambase/memory.hpp"
#include "shambackends/DeviceBuffer.hpp"
#include "shambackends/DeviceScheduler.hpp"
#include "shambackends/kernel_call.hpp"
+ Include dependency graph for algorithm.cpp:

Go to the source code of this file.

Namespaces

namespace  shamalgs
 namespace to contain everything implemented by shamalgs
 
namespace  shamalgs::algorithm
 namespace to store algorithms implemented by shamalgs
 

Macros

#define XMAC_TYPES
 
#define X(_arg_)
 

Functions

sycl::buffer< u32shamalgs::algorithm::gen_buffer_index (sycl::queue &q, u32 len)
 generate a buffer such that for i in [0,len[, buf[i] = i
 
template<class T >
sycl::buffer< T > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< T > &source_buf, sycl::buffer< u32 > &index_map, u32 len)
 remap a buffer according to a given index map result[i] = result[index_map[i]]
 
template<class T >
sycl::buffer< T > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< T > &source_buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 remap a buffer (with multiple variable per index) according to a given index map result[i] = result[index_map[i]]
 
template<class T >
void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< T > &source, sham::DeviceBuffer< T > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template<class T >
void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< T > &source, sham::DeviceBuffer< T > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< f32shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< f32 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< f32shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< f32 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32 > &source, sham::DeviceBuffer< f32 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32 > &source, sham::DeviceBuffer< f32 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< f32_2 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< f32_2 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< f32_2 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< f32_2 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32_2 > &source, sham::DeviceBuffer< f32_2 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32_2 > &source, sham::DeviceBuffer< f32_2 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< f32_3 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< f32_3 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< f32_3 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< f32_3 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32_3 > &source, sham::DeviceBuffer< f32_3 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32_3 > &source, sham::DeviceBuffer< f32_3 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< f32_4 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< f32_4 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< f32_4 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< f32_4 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32_4 > &source, sham::DeviceBuffer< f32_4 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32_4 > &source, sham::DeviceBuffer< f32_4 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< f32_8 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< f32_8 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< f32_8 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< f32_8 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32_8 > &source, sham::DeviceBuffer< f32_8 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32_8 > &source, sham::DeviceBuffer< f32_8 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< f32_16 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< f32_16 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< f32_16 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< f32_16 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32_16 > &source, sham::DeviceBuffer< f32_16 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f32_16 > &source, sham::DeviceBuffer< f32_16 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< f64shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< f64 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< f64shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< f64 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64 > &source, sham::DeviceBuffer< f64 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64 > &source, sham::DeviceBuffer< f64 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< f64_2 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< f64_2 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< f64_2 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< f64_2 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64_2 > &source, sham::DeviceBuffer< f64_2 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64_2 > &source, sham::DeviceBuffer< f64_2 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< f64_3 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< f64_3 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< f64_3 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< f64_3 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64_3 > &source, sham::DeviceBuffer< f64_3 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64_3 > &source, sham::DeviceBuffer< f64_3 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< f64_4 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< f64_4 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< f64_4 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< f64_4 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64_4 > &source, sham::DeviceBuffer< f64_4 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64_4 > &source, sham::DeviceBuffer< f64_4 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< f64_8 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< f64_8 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< f64_8 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< f64_8 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64_8 > &source, sham::DeviceBuffer< f64_8 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64_8 > &source, sham::DeviceBuffer< f64_8 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< f64_16 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< f64_16 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< f64_16 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< f64_16 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64_16 > &source, sham::DeviceBuffer< f64_16 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< f64_16 > &source, sham::DeviceBuffer< f64_16 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< u32shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< u32 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< u32shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< u32 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< u32 > &source, sham::DeviceBuffer< u32 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< u32 > &source, sham::DeviceBuffer< u32 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< u64shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< u64 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< u64shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< u64 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< u64 > &source, sham::DeviceBuffer< u64 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< u64 > &source, sham::DeviceBuffer< u64 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< u32_3 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< u32_3 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< u32_3 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< u32_3 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< u32_3 > &source, sham::DeviceBuffer< u32_3 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< u32_3 > &source, sham::DeviceBuffer< u32_3 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< u64_3 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< u64_3 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< u64_3 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< u64_3 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< u64_3 > &source, sham::DeviceBuffer< u64_3 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< u64_3 > &source, sham::DeviceBuffer< u64_3 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< i64_3 > shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< i64_3 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< i64_3 > shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< i64_3 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< i64_3 > &source, sham::DeviceBuffer< i64_3 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< i64_3 > &source, sham::DeviceBuffer< i64_3 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 
template sycl::buffer< i64shamalgs::algorithm::index_remap (sycl::queue &q, sycl::buffer< i64 > &buf, sycl::buffer< u32 > &index_map, u32 len)
 
template sycl::buffer< i64shamalgs::algorithm::index_remap_nvar (sycl::queue &q, sycl::buffer< i64 > &buf, sycl::buffer< u32 > &index_map, u32 len, u32 nvar)
 
template void shamalgs::algorithm::index_remap (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< i64 > &source, sham::DeviceBuffer< i64 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len)
 
template void shamalgs::algorithm::index_remap_nvar (const sham::DeviceScheduler_ptr &sched, sham::DeviceBuffer< i64 > &source, sham::DeviceBuffer< i64 > &dest, sham::DeviceBuffer< u32 > &index_map, u32 len, u32 nvar)
 

Detailed Description

Author
Timothée David–Cléris (tim.s.nosp@m.hamr.nosp@m.ock@p.nosp@m.roto.nosp@m.n.me)

Definition in file algorithm.cpp.

Macro Definition Documentation

◆ X

#define X (   _arg_)
Value:
template sycl::buffer<_arg_> index_remap( \
sycl::queue &q, sycl::buffer<_arg_> &buf, sycl::buffer<u32> &index_map, u32 len); \
\
template sycl::buffer<_arg_> index_remap_nvar( \
sycl::queue &q, \
sycl::buffer<_arg_> &buf, \
sycl::buffer<u32> &index_map, \
u32 len, \
u32 nvar); \
\
template void index_remap( \
const sham::DeviceScheduler_ptr &sched, \
u32 len); \
\
template void index_remap_nvar( \
const sham::DeviceScheduler_ptr &sched, \
u32 len, \
u32 nvar);
std::uint32_t u32
32 bit unsigned integer
A buffer allocated in USM (Unified Shared Memory)

Definition at line 158 of file algorithm.cpp.

◆ XMAC_TYPES

#define XMAC_TYPES
Value:
X(f32) \
X(f32_2) \
X(f32_3) \
X(f32_4) \
X(f32_8) \
X(f32_16) \
X(f64) \
X(f64_2) \
X(f64_3) \
X(f64_4) \
X(f64_8) \
X(f64_16) \
X(u32) \
X(u64) \
X(u32_3) \
X(u64_3) \
X(i64_3) \
X(i64)
double f64
Alias for double.
float f32
Alias for float.
std::uint64_t u64
64 bit unsigned integer
std::int64_t i64
64 bit integer

Definition at line 138 of file algorithm.cpp.