Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
Functions
shamalgs::memory Namespace Reference

memory manipulation algorithms More...

Functions

template<class T >
sycl::buffer< T > flatten_buffer (sycl::queue &q, sycl::buffer< T > &buf_in, u64 len)
 
template<class T , int n>
sycl::buffer< T > flatten_buffer (sycl::queue &q, sycl::buffer< sycl::vec< T, n > > &buf_in, u64 len)
 
template<class T >
extract_element (sycl::queue &q, sycl::buffer< T > &buf, u32 idx)
 extract a value of a buffer
 
template<class T >
extract_element (sham::DeviceQueue &q, sham::DeviceBuffer< T > &buf, u32 idx)
 Extract a value from a DeviceBuffer.
 
template<class T >
void set_element (sycl::queue &q, sycl::buffer< T > &buf, u32 idx, T val, bool discard_write=false)
 
template<class T >
sycl::buffer< T > vec_to_buf (const std::vector< T > &buf)
 Convert a std::vector to a sycl::buffer
 
template<class T >
std::vector< T > buf_to_vec (sycl::buffer< T > &buf, u32 len)
 Convert a sycl::buffer to a std::vector
 
template<class T >
void move_buffer_on_queue (sycl::queue &q, sycl::buffer< T > &buf)
 enqueue a do nothing kernel to force the buffer to move
 
template<class T >
void buf_fill (sycl::queue &q, sycl::buffer< T > &buf, T value)
 Fill a buffer with a given value.
 
template<class T >
void buf_fill_discard (sycl::queue &q, sycl::buffer< T > &buf, T value)
 Fill a buffer with a given value (sycl::no_init mode)
 
template<class T >
void print_buf (sycl::buffer< T > &buf, u32 len, u32 column_count, std::string_view fmt)
 Print the content of a sycl::buffer
 
template<class T >
void copybuf_discard (sycl::queue &q, sycl::buffer< T > &source, sycl::buffer< T > &dest, u32 cnt)
 
template<class T >
void copybuf (sycl::queue &q, sycl::buffer< T > &source, sycl::buffer< T > &dest, u32 cnt)
 
template<class T >
void add_with_factor_to (sycl::queue &q, sycl::buffer< T > &buf, T factor, sycl::buffer< T > &op, u32 cnt)
 
template<class T >
void write_with_offset_into (sycl::queue &q, sycl::buffer< T > &buf_ctn, sycl::buffer< T > &buf_in, u32 offset, u32 element_count)
 
template<class T >
void write_with_offset_into (sham::DeviceQueue &q, sham::DeviceBuffer< T > &buf_ctn, sham::DeviceBuffer< T > &buf_in, u32 offset, u32 element_count)
 Write elements from input buffer to container buffer at an offset (DeviceBuffer variant)
 
template<class T >
void write_with_offset_into (sham::DeviceQueue &q, sycl::buffer< T > &buf_ctn, sham::DeviceBuffer< T > &buf_in, u32 offset, u32 element_count)
 Write elements from DeviceBuffer to sycl::buffer at an offset.
 
template<class T >
void write_with_offset_into (sycl::queue &q, sycl::buffer< T > &buf_ctn, T val, u32 offset, u32 element_count)
 
template<class T >
std::unique_ptr< sycl::buffer< T > > duplicate (sycl::queue &q, const std::unique_ptr< sycl::buffer< T > > &buf_in)
 
template<class T >
sycl::buffer< T > vector_to_buf (sycl::queue &q, std::vector< T > &&vec)
 
template<class T >
sycl::buffer< T > vector_to_buf (sycl::queue &q, std::vector< T > &vec)
 Convert std::vector to sycl::buffer with data copy (lvalue reference version)
 
template f32 extract_element (sycl::queue &q, sycl::buffer< f32 > &buf, u32 idx)
 
template sycl::buffer< f32vec_to_buf (const std::vector< f32 > &buf)
 
template std::vector< f32buf_to_vec (sycl::buffer< f32 > &buf, u32 len)
 
template f32_2 extract_element (sycl::queue &q, sycl::buffer< f32_2 > &buf, u32 idx)
 
template sycl::buffer< f32_2 > vec_to_buf (const std::vector< f32_2 > &buf)
 
template std::vector< f32_2 > buf_to_vec (sycl::buffer< f32_2 > &buf, u32 len)
 
template f32_3 extract_element (sycl::queue &q, sycl::buffer< f32_3 > &buf, u32 idx)
 
template sycl::buffer< f32_3 > vec_to_buf (const std::vector< f32_3 > &buf)
 
template std::vector< f32_3 > buf_to_vec (sycl::buffer< f32_3 > &buf, u32 len)
 
template f32_4 extract_element (sycl::queue &q, sycl::buffer< f32_4 > &buf, u32 idx)
 
template sycl::buffer< f32_4 > vec_to_buf (const std::vector< f32_4 > &buf)
 
template std::vector< f32_4 > buf_to_vec (sycl::buffer< f32_4 > &buf, u32 len)
 
template f32_8 extract_element (sycl::queue &q, sycl::buffer< f32_8 > &buf, u32 idx)
 
template sycl::buffer< f32_8 > vec_to_buf (const std::vector< f32_8 > &buf)
 
template std::vector< f32_8 > buf_to_vec (sycl::buffer< f32_8 > &buf, u32 len)
 
template f32_16 extract_element (sycl::queue &q, sycl::buffer< f32_16 > &buf, u32 idx)
 
template sycl::buffer< f32_16 > vec_to_buf (const std::vector< f32_16 > &buf)
 
template std::vector< f32_16 > buf_to_vec (sycl::buffer< f32_16 > &buf, u32 len)
 
template f64 extract_element (sycl::queue &q, sycl::buffer< f64 > &buf, u32 idx)
 
template sycl::buffer< f64vec_to_buf (const std::vector< f64 > &buf)
 
template std::vector< f64buf_to_vec (sycl::buffer< f64 > &buf, u32 len)
 
template f64_2 extract_element (sycl::queue &q, sycl::buffer< f64_2 > &buf, u32 idx)
 
template sycl::buffer< f64_2 > vec_to_buf (const std::vector< f64_2 > &buf)
 
template std::vector< f64_2 > buf_to_vec (sycl::buffer< f64_2 > &buf, u32 len)
 
template f64_3 extract_element (sycl::queue &q, sycl::buffer< f64_3 > &buf, u32 idx)
 
template sycl::buffer< f64_3 > vec_to_buf (const std::vector< f64_3 > &buf)
 
template std::vector< f64_3 > buf_to_vec (sycl::buffer< f64_3 > &buf, u32 len)
 
template f64_4 extract_element (sycl::queue &q, sycl::buffer< f64_4 > &buf, u32 idx)
 
template sycl::buffer< f64_4 > vec_to_buf (const std::vector< f64_4 > &buf)
 
template std::vector< f64_4 > buf_to_vec (sycl::buffer< f64_4 > &buf, u32 len)
 
template f64_8 extract_element (sycl::queue &q, sycl::buffer< f64_8 > &buf, u32 idx)
 
template sycl::buffer< f64_8 > vec_to_buf (const std::vector< f64_8 > &buf)
 
template std::vector< f64_8 > buf_to_vec (sycl::buffer< f64_8 > &buf, u32 len)
 
template f64_16 extract_element (sycl::queue &q, sycl::buffer< f64_16 > &buf, u32 idx)
 
template sycl::buffer< f64_16 > vec_to_buf (const std::vector< f64_16 > &buf)
 
template std::vector< f64_16 > buf_to_vec (sycl::buffer< f64_16 > &buf, u32 len)
 
template u8 extract_element (sycl::queue &q, sycl::buffer< u8 > &buf, u32 idx)
 
template sycl::buffer< u8vec_to_buf (const std::vector< u8 > &buf)
 
template std::vector< u8buf_to_vec (sycl::buffer< u8 > &buf, u32 len)
 
template u32 extract_element (sycl::queue &q, sycl::buffer< u32 > &buf, u32 idx)
 
template sycl::buffer< u32vec_to_buf (const std::vector< u32 > &buf)
 
template std::vector< u32buf_to_vec (sycl::buffer< u32 > &buf, u32 len)
 
template u32_2 extract_element (sycl::queue &q, sycl::buffer< u32_2 > &buf, u32 idx)
 
template sycl::buffer< u32_2 > vec_to_buf (const std::vector< u32_2 > &buf)
 
template std::vector< u32_2 > buf_to_vec (sycl::buffer< u32_2 > &buf, u32 len)
 
template u32_3 extract_element (sycl::queue &q, sycl::buffer< u32_3 > &buf, u32 idx)
 
template sycl::buffer< u32_3 > vec_to_buf (const std::vector< u32_3 > &buf)
 
template std::vector< u32_3 > buf_to_vec (sycl::buffer< u32_3 > &buf, u32 len)
 
template u32_4 extract_element (sycl::queue &q, sycl::buffer< u32_4 > &buf, u32 idx)
 
template sycl::buffer< u32_4 > vec_to_buf (const std::vector< u32_4 > &buf)
 
template std::vector< u32_4 > buf_to_vec (sycl::buffer< u32_4 > &buf, u32 len)
 
template u32_8 extract_element (sycl::queue &q, sycl::buffer< u32_8 > &buf, u32 idx)
 
template sycl::buffer< u32_8 > vec_to_buf (const std::vector< u32_8 > &buf)
 
template std::vector< u32_8 > buf_to_vec (sycl::buffer< u32_8 > &buf, u32 len)
 
template u32_16 extract_element (sycl::queue &q, sycl::buffer< u32_16 > &buf, u32 idx)
 
template sycl::buffer< u32_16 > vec_to_buf (const std::vector< u32_16 > &buf)
 
template std::vector< u32_16 > buf_to_vec (sycl::buffer< u32_16 > &buf, u32 len)
 
template u64 extract_element (sycl::queue &q, sycl::buffer< u64 > &buf, u32 idx)
 
template sycl::buffer< u64vec_to_buf (const std::vector< u64 > &buf)
 
template std::vector< u64buf_to_vec (sycl::buffer< u64 > &buf, u32 len)
 
template u64_2 extract_element (sycl::queue &q, sycl::buffer< u64_2 > &buf, u32 idx)
 
template sycl::buffer< u64_2 > vec_to_buf (const std::vector< u64_2 > &buf)
 
template std::vector< u64_2 > buf_to_vec (sycl::buffer< u64_2 > &buf, u32 len)
 
template u64_3 extract_element (sycl::queue &q, sycl::buffer< u64_3 > &buf, u32 idx)
 
template sycl::buffer< u64_3 > vec_to_buf (const std::vector< u64_3 > &buf)
 
template std::vector< u64_3 > buf_to_vec (sycl::buffer< u64_3 > &buf, u32 len)
 
template u64_4 extract_element (sycl::queue &q, sycl::buffer< u64_4 > &buf, u32 idx)
 
template sycl::buffer< u64_4 > vec_to_buf (const std::vector< u64_4 > &buf)
 
template std::vector< u64_4 > buf_to_vec (sycl::buffer< u64_4 > &buf, u32 len)
 
template u64_8 extract_element (sycl::queue &q, sycl::buffer< u64_8 > &buf, u32 idx)
 
template sycl::buffer< u64_8 > vec_to_buf (const std::vector< u64_8 > &buf)
 
template std::vector< u64_8 > buf_to_vec (sycl::buffer< u64_8 > &buf, u32 len)
 
template u64_16 extract_element (sycl::queue &q, sycl::buffer< u64_16 > &buf, u32 idx)
 
template sycl::buffer< u64_16 > vec_to_buf (const std::vector< u64_16 > &buf)
 
template std::vector< u64_16 > buf_to_vec (sycl::buffer< u64_16 > &buf, u32 len)
 
template i64_3 extract_element (sycl::queue &q, sycl::buffer< i64_3 > &buf, u32 idx)
 
template sycl::buffer< i64_3 > vec_to_buf (const std::vector< i64_3 > &buf)
 
template std::vector< i64_3 > buf_to_vec (sycl::buffer< i64_3 > &buf, u32 len)
 
template i64 extract_element (sycl::queue &q, sycl::buffer< i64 > &buf, u32 idx)
 
template sycl::buffer< i64vec_to_buf (const std::vector< i64 > &buf)
 
template std::vector< i64buf_to_vec (sycl::buffer< i64 > &buf, u32 len)
 

Detailed Description

memory manipulation algorithms

Function Documentation

◆ add_with_factor_to()

template<class T >
void shamalgs::memory::add_with_factor_to ( sycl::queue &  q,
sycl::buffer< T > &  buf,
factor,
sycl::buffer< T > &  op,
u32  cnt 
)

Definition at line 228 of file memory.hpp.

◆ buf_fill()

template<class T >
void shamalgs::memory::buf_fill ( sycl::queue &  q,
sycl::buffer< T > &  buf,
value 
)
inline

Fill a buffer with a given value.

Template Parameters
T
Parameters
q
buf
value

Definition at line 140 of file memory.hpp.

◆ buf_fill_discard()

template<class T >
void shamalgs::memory::buf_fill_discard ( sycl::queue &  q,
sycl::buffer< T > &  buf,
value 
)
inline

Fill a buffer with a given value (sycl::no_init mode)

Template Parameters
T
Parameters
q
buf
value

Definition at line 159 of file memory.hpp.

◆ buf_to_vec()

template<class T >
std::vector< T > shamalgs::memory::buf_to_vec ( sycl::buffer< T > &  buf,
u32  len 
)

Convert a sycl::buffer to a std::vector

Template Parameters
T
Parameters
buf
len
Returns
std::vector<T>

Definition at line 34 of file memory.cpp.

◆ copybuf()

template<class T >
void shamalgs::memory::copybuf ( sycl::queue &  q,
sycl::buffer< T > &  source,
sycl::buffer< T > &  dest,
u32  cnt 
)

Definition at line 216 of file memory.hpp.

◆ copybuf_discard()

template<class T >
void shamalgs::memory::copybuf_discard ( sycl::queue &  q,
sycl::buffer< T > &  source,
sycl::buffer< T > &  dest,
u32  cnt 
)

Definition at line 204 of file memory.hpp.

◆ duplicate()

template<class T >
std::unique_ptr< sycl::buffer< T > > shamalgs::memory::duplicate ( sycl::queue &  q,
const std::unique_ptr< sycl::buffer< T > > &  buf_in 
)

Definition at line 338 of file memory.hpp.

◆ extract_element() [1/2]

template<class T >
T shamalgs::memory::extract_element ( sham::DeviceQueue q,
sham::DeviceBuffer< T > &  buf,
u32  idx 
)

Extract a value from a DeviceBuffer.

Template Parameters
TType of buffer elements
Parameters
qDevice queue to submit operation
bufDevice buffer to extract from
idxIndex of element to extract
Returns
T the extracted value

Definition at line 51 of file memory.hpp.

+ Here is the call graph for this function:

◆ extract_element() [2/2]

template<class T >
T shamalgs::memory::extract_element ( sycl::queue &  q,
sycl::buffer< T > &  buf,
u32  idx 
)

extract a value of a buffer

Template Parameters
Tthe type of the buffer & value
Parameters
qthe queue to use
bufthe buffer to extract from
idxthe index of the value that will be extracted
Returns
T the extracted value

Definition at line 24 of file memory.cpp.

◆ flatten_buffer() [1/2]

template<class T , int n>
sycl::buffer< T > shamalgs::memory::flatten_buffer ( sycl::queue &  q,
sycl::buffer< sycl::vec< T, n > > &  buf_in,
u64  len 
)
inline

Definition at line 38 of file bufferFlattening.hpp.

◆ flatten_buffer() [2/2]

template<class T >
sycl::buffer< T > shamalgs::memory::flatten_buffer ( sycl::queue &  q,
sycl::buffer< T > &  buf_in,
u64  len 
)
inline

Definition at line 25 of file bufferFlattening.hpp.

◆ move_buffer_on_queue()

template<class T >
void shamalgs::memory::move_buffer_on_queue ( sycl::queue &  q,
sycl::buffer< T > &  buf 
)
inline

enqueue a do nothing kernel to force the buffer to move

Template Parameters
T
Parameters
q
buf

Definition at line 119 of file memory.hpp.

◆ print_buf()

template<class T >
void shamalgs::memory::print_buf ( sycl::buffer< T > &  buf,
u32  len,
u32  column_count,
std::string_view  fmt 
)
inline

Print the content of a sycl::buffer

Template Parameters
T
Tformat
Parameters
buf
len
column_count
fmt

Definition at line 181 of file memory.hpp.

+ Here is the call graph for this function:

◆ set_element()

template<class T >
void shamalgs::memory::set_element ( sycl::queue &  q,
sycl::buffer< T > &  buf,
u32  idx,
val,
bool  discard_write = false 
)

Definition at line 70 of file memory.hpp.

◆ vec_to_buf()

template<class T >
sycl::buffer< T > shamalgs::memory::vec_to_buf ( const std::vector< T > &  buf)

Convert a std::vector to a sycl::buffer

Template Parameters
T
Parameters
buf
Returns
sycl::buffer<T>

Definition at line 29 of file memory.cpp.

◆ vector_to_buf() [1/2]

template<class T >
sycl::buffer< T > shamalgs::memory::vector_to_buf ( sycl::queue &  q,
std::vector< T > &&  vec 
)

Definition at line 349 of file memory.hpp.

◆ vector_to_buf() [2/2]

template<class T >
sycl::buffer< T > shamalgs::memory::vector_to_buf ( sycl::queue &  q,
std::vector< T > &  vec 
)

Convert std::vector to sycl::buffer with data copy (lvalue reference version)

Template Parameters
TType of vector elements
Parameters
qSYCL queue to submit operation
vecVector to convert
Returns
sycl::buffer<T> A new buffer containing the data from the vector.

Definition at line 376 of file memory.hpp.

◆ write_with_offset_into() [1/4]

template<class T >
void shamalgs::memory::write_with_offset_into ( sham::DeviceQueue q,
sham::DeviceBuffer< T > &  buf_ctn,
sham::DeviceBuffer< T > &  buf_in,
u32  offset,
u32  element_count 
)

Write elements from input buffer to container buffer at an offset (DeviceBuffer variant)

Template Parameters
TType of buffer elements
Parameters
qDevice queue to submit operation
buf_ctnContainer buffer (destination)
buf_inInput buffer (source)
offsetStarting position in container
element_countNumber of elements to write

Definition at line 271 of file memory.hpp.

+ Here is the call graph for this function:

◆ write_with_offset_into() [2/4]

template<class T >
void shamalgs::memory::write_with_offset_into ( sham::DeviceQueue q,
sycl::buffer< T > &  buf_ctn,
sham::DeviceBuffer< T > &  buf_in,
u32  offset,
u32  element_count 
)

Write elements from DeviceBuffer to sycl::buffer at an offset.

Template Parameters
TType of buffer elements
Parameters
qDevice queue to submit operation
buf_ctnContainer buffer (destination)
buf_inInput DeviceBuffer (source)
offsetStarting position in container
element_countNumber of elements to write

Definition at line 304 of file memory.hpp.

+ Here is the call graph for this function:

◆ write_with_offset_into() [3/4]

template<class T >
void shamalgs::memory::write_with_offset_into ( sycl::queue &  q,
sycl::buffer< T > &  buf_ctn,
sycl::buffer< T > &  buf_in,
u32  offset,
u32  element_count 
)

Definition at line 243 of file memory.hpp.

◆ write_with_offset_into() [4/4]

template<class T >
void shamalgs::memory::write_with_offset_into ( sycl::queue &  q,
sycl::buffer< T > &  buf_ctn,
val,
u32  offset,
u32  element_count 
)

Definition at line 326 of file memory.hpp.