Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
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,
T 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,
T 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,
T 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.

◆ set_element()

template<class T>
void shamalgs::memory::set_element ( sycl::queue & q,
sycl::buffer< T > & buf,
u32 idx,
T 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,
T val,
u32 offset,
u32 element_count )

Definition at line 326 of file memory.hpp.