Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
shamrock::PatchDataFieldSpan< T, nvar, pointer_access > Class Template Reference

Represents a span of data within a PatchDataField. More...

#include <shamrock/include/shamrock/patch/PatchDataFieldSpan.hpp>

Public Member Functions

 PatchDataFieldSpan (PatchDataField< T > &field_ref, u32 start, u32 count, SourceLocation loc=SourceLocation{})
 Constructor.
 
template<typename Dummy = void, typename = std::enable_if_t<is_nvar_dynamic() && is_span_access(), Dummy>>
auto get_read_access (sham::EventList &depends_list, SourceLocation src_loc=SourceLocation{}) const -> details::PatchDataFieldSpan_access_ro_dyn_nvar< T >
 Returns a read-only accessor to the data in the span.
 
template<typename Dummy = void, typename = std::enable_if_t<is_nvar_dynamic() && is_span_access(), Dummy>>
auto get_write_access (sham::EventList &depends_list, SourceLocation src_loc=SourceLocation{}) -> details::PatchDataFieldSpan_access_rw_dyn_nvar< T >
 Returns a read-write accessor to the data in the span.
 
template<typename Dummy = void, typename = std::enable_if_t<is_nvar_static() && is_span_access(), Dummy>>
auto get_read_access (sham::EventList &depends_list, SourceLocation src_loc=SourceLocation{}) const -> details::PatchDataFieldSpan_access_ro_static_nvar< T, nvar >
 Returns a read-only accessor to the data in the span.
 
template<typename Dummy = void, typename = std::enable_if_t<is_nvar_static() && is_span_access(), Dummy>>
auto get_write_access (sham::EventList &depends_list, SourceLocation src_loc=SourceLocation{}) -> details::PatchDataFieldSpan_access_rw_static_nvar< T, nvar >
 Returns a read-write accessor to the data in the span.
 
template<typename Dummy = void, typename = std::enable_if_t<is_pointer_access(), Dummy>>
auto get_read_access (sham::EventList &depends_list, SourceLocation src_loc=SourceLocation{}) const -> const T *
 
template<typename Dummy = void, typename = std::enable_if_t<is_pointer_access(), Dummy>>
auto get_write_access (sham::EventList &depends_list, SourceLocation src_loc=SourceLocation{}) -> T *
 
void complete_event_state (sycl::event e) const
 Completes the event state of the underlying buffer.
 

Static Public Member Functions

static constexpr bool is_nvar_dynamic ()
 Returns true if the number of variables is dynamic.
 
static constexpr bool is_nvar_static ()
 Returns true if the number of variables is static.
 
static constexpr bool is_pointer_access ()
 
static constexpr bool is_span_access ()
 

Public Attributes

PatchDataField< T > & field_ref
 Reference to the PatchDataField.
 
u32 start
 Starting element index of the span.
 
u32 count
 Number of elements.
 

Detailed Description

template<class T, u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
class shamrock::PatchDataFieldSpan< T, nvar, pointer_access >

Represents a span of data within a PatchDataField.

This class provides a way to access a contiguous range of elements within a PatchDataField. It provides either static or dynamic number of variables.

PatchDataField<T> field("test", 2, cnt_test / 2);
field.override(test_vals, cnt_test);
sham::DeviceBuffer<T> ret(test_vals.size(), shamsys::instance::get_compute_scheduler_ptr());s
shamsys::instance::get_compute_scheduler_ptr()->get_queue(),
cnt_test / 2,
[](u32 i, auto sp, T *ret_val) {
ret_val[i * 2 + 0] = sp(i, 0);
ret_val[i * 2 + 1] = sp(i, 1);
});
std::uint32_t u32
32 bit unsigned integer
A buffer allocated in USM (Unified Shared Memory)
Represents a span of data within a PatchDataField.
void kernel_call(sham::DeviceQueue &q, RefIn in, RefOut in_out, u32 n, Functor &&func, SourceLocation &&callsite=SourceLocation{})
Submit a kernel to a SYCL queue.
A class that references multiple buffers or similar objects.
Template Parameters
TThe type of data stored in the PatchDataField.
nvarThe number of variables in the PatchDataField. Defaults to dynamic_nvar.

Definition at line 143 of file PatchDataFieldSpan.hpp.

Constructor & Destructor Documentation

◆ PatchDataFieldSpan()

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::PatchDataFieldSpan ( PatchDataField< T > &  field_ref,
u32  start,
u32  count,
SourceLocation  loc = SourceLocation{} 
)
inline

Constructor.

Initializes the span with a reference to a PatchDataField, a starting index, and a count of elements.

Parameters
field_refReference to the PatchDataField.
startStarting index of the span.
countNumber of elements in the span.
Exceptions
std::invalid_argumentIf the underlying buffer is empty.
std::invalid_argumentIf the number of variables is static and does not match the number of variables in the PatchDataField.

Definition at line 178 of file PatchDataFieldSpan.hpp.

Member Function Documentation

◆ complete_event_state()

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
void shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::complete_event_state ( sycl::event  e) const
inline

Completes the event state of the underlying buffer.

Parameters
eEvent to complete.

Definition at line 330 of file PatchDataFieldSpan.hpp.

◆ get_read_access() [1/3]

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
template<typename Dummy = void, typename = std::enable_if_t<is_pointer_access(), Dummy>>
auto shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::get_read_access ( sham::EventList depends_list,
SourceLocation  src_loc = SourceLocation{} 
) const -> const T *
inline

Definition at line 307 of file PatchDataFieldSpan.hpp.

◆ get_read_access() [2/3]

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
template<typename Dummy = void, typename = std::enable_if_t<is_nvar_dynamic() && is_span_access(), Dummy>>
auto shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::get_read_access ( sham::EventList depends_list,
SourceLocation  src_loc = SourceLocation{} 
) const -> details::PatchDataFieldSpan_access_ro_dyn_nvar<T>
inline

Returns a read-only accessor to the data in the span.

The type of accessor returned depends on whether the number of variables is static or dynamic.

Parameters
depends_listEvent list that the accessor depends on.
Returns
Read-only accessor to the data in the span.

Definition at line 229 of file PatchDataFieldSpan.hpp.

◆ get_read_access() [3/3]

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
template<typename Dummy = void, typename = std::enable_if_t<is_nvar_static() && is_span_access(), Dummy>>
auto shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::get_read_access ( sham::EventList depends_list,
SourceLocation  src_loc = SourceLocation{} 
) const -> details::PatchDataFieldSpan_access_ro_static_nvar<T, nvar>
inline

Returns a read-only accessor to the data in the span.

The type of accessor returned depends on whether the number of variables is static or dynamic.

Parameters
depends_listEvent list that the accessor depends on.
Returns
Read-only accessor to the data in the span.

Definition at line 275 of file PatchDataFieldSpan.hpp.

◆ get_write_access() [1/3]

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
template<typename Dummy = void, typename = std::enable_if_t<is_nvar_dynamic() && is_span_access(), Dummy>>
auto shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::get_write_access ( sham::EventList depends_list,
SourceLocation  src_loc = SourceLocation{} 
) -> details::PatchDataFieldSpan_access_rw_dyn_nvar<T>
inline

Returns a read-write accessor to the data in the span.

The type of accessor returned depends on whether the number of variables is static or dynamic.

Parameters
depends_listEvent list that the accessor depends on.
Returns
Read-write accessor to the data in the span.

Definition at line 252 of file PatchDataFieldSpan.hpp.

◆ get_write_access() [2/3]

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
template<typename Dummy = void, typename = std::enable_if_t<is_nvar_static() && is_span_access(), Dummy>>
auto shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::get_write_access ( sham::EventList depends_list,
SourceLocation  src_loc = SourceLocation{} 
) -> details::PatchDataFieldSpan_access_rw_static_nvar<T, nvar>
inline

Returns a read-write accessor to the data in the span.

The type of accessor returned depends on whether the number of variables is static or dynamic.

Parameters
depends_listEvent list that the accessor depends on.
Returns
Read-write accessor to the data in the span.

Definition at line 297 of file PatchDataFieldSpan.hpp.

◆ get_write_access() [3/3]

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
template<typename Dummy = void, typename = std::enable_if_t<is_pointer_access(), Dummy>>
auto shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::get_write_access ( sham::EventList depends_list,
SourceLocation  src_loc = SourceLocation{} 
) -> T *
inline

Definition at line 317 of file PatchDataFieldSpan.hpp.

◆ is_nvar_dynamic()

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
static constexpr bool shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::is_nvar_dynamic ( )
inlinestaticconstexpr

Returns true if the number of variables is dynamic.

Returns
True if the number of variables is dynamic, false otherwise.

Definition at line 150 of file PatchDataFieldSpan.hpp.

◆ is_nvar_static()

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
static constexpr bool shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::is_nvar_static ( )
inlinestaticconstexpr

Returns true if the number of variables is static.

Returns
True if the number of variables is static, false otherwise.

Definition at line 157 of file PatchDataFieldSpan.hpp.

◆ is_pointer_access()

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
static constexpr bool shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::is_pointer_access ( )
inlinestaticconstexpr

Definition at line 159 of file PatchDataFieldSpan.hpp.

◆ is_span_access()

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
static constexpr bool shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::is_span_access ( )
inlinestaticconstexpr

Definition at line 162 of file PatchDataFieldSpan.hpp.

Member Data Documentation

◆ count

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
u32 shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::count

Number of elements.

Definition at line 342 of file PatchDataFieldSpan.hpp.

◆ field_ref

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
PatchDataField<T>& shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::field_ref

Reference to the PatchDataField.

Definition at line 336 of file PatchDataFieldSpan.hpp.

◆ start

template<class T , u32 nvar = dynamic_nvar, bool pointer_access = access_t_span>
u32 shamrock::PatchDataFieldSpan< T, nvar, pointer_access >::start

Starting element index of the span.

Definition at line 339 of file PatchDataFieldSpan.hpp.


The documentation for this class was generated from the following file: