cuda::experimental::stf::data_interface#
-
class data_interface#
The data_interface class defines the methods used to allocate, deallocate, or transfer a piece of data with a specific data interface.
This could be a block of data, a CSR matrix, or any other data structure.
Subclassed by cuda::experimental::stf::data_impl_base< hashtable >, cuda::experimental::stf::data_impl_base< scalar_view< T > >, cuda::experimental::stf::data_impl_base< slice< T, 1 > >, cuda::experimental::stf::data_impl_base< void_interface >, cuda::experimental::stf::data_impl_base< T >
Public Functions
-
data_interface(const data_interface&) = delete#
-
data_interface &operator=(const data_interface&) = delete#
-
inline virtual ~data_interface()#
Destructor for the data_interface.
-
inline data_interface()#
Default constructor.
- virtual void data_allocate(
- backend_ctx_untyped &ctx,
- block_allocator_untyped &custom_allocator,
- const data_place &memory_node,
- instance_id_t instance_id,
- ::std::ptrdiff_t &s,
- void **extra_args,
- event_list &prereqs,
Allocate data and return a prerequisite event list.
- Parameters:
ctx – Backend context state
memory_node – The memory node where the data is stored
instance_id – The ID of the data instance
s – Pointer to the size of the allocated data
extra_args – Additional arguments required for allocation
prereqs – Prerequisite event list, will be updated as a side effect
- virtual void data_deallocate(
- backend_ctx_untyped &ctx,
- block_allocator_untyped &custom_allocator,
- const data_place &memory_node,
- instance_id_t instance_id,
- void *extra_args,
- event_list &prereqs,
Deallocate data and return a prerequisite event list.
- Parameters:
ctx – Backend context state
memory_node – The memory node where the data is stored
instance_id – The ID of the data instance
extra_args – Additional arguments required for deallocation
prereqs – Prerequisite event list, will be updated as a side effect
- virtual void data_copy(
- backend_ctx_untyped &ctx,
- const data_place &dst_memory_node,
- instance_id_t dst_instance_id,
- const data_place &src_memory_node,
- instance_id_t src_instance_id,
- event_list &prereqs,
Copy data from one memory node to another, returning a prerequisite event list.
- Parameters:
ctx – Backend context state
dst_memory_node – The destination memory node
dst_instance_id – The destination instance ID
src_memory_node – The source memory node
src_instance_id – The source instance ID
arg – Additional arguments required for copying data
prereqs – Prerequisite event list, will be updated as a side effect
-
inline virtual bool pin_host_memory(instance_id_t)#
Pin host memory.
- Parameters:
instance_id – The ID of the data instance
- Returns:
true if the instance was pinned, false otherwise
- inline ::std::optional<cudaMemoryType> get_memory_type( )#
-
inline virtual void unpin_host_memory(instance_id_t)#
Unpin host memory.
- Parameters:
instance_id – The ID of the data instance
-
virtual size_t data_hash(instance_id_t instance_id) const = 0#
Get the hash of the data representation for the given instance ID.
- Parameters:
instance_id – The ID of the data instance
- Returns:
The hash of the data representation
-
template<typename T>
inline const T &shape() const# Get the part of the data interface that is common to all data instances.
- Template Parameters:
T – The type of the data shape
- Returns:
A const reference to the data shape
-
template<typename T>
inline decltype(auto) instance( - instance_id_t instance_id,
Get the part of the data interface that is specific to each data instance.
- Template Parameters:
T – The type of the data instance
- Parameters:
instance_id – The ID of the data instance
- Returns:
A reference or value of the data instance
-
template<typename T>
inline const T &instance_const( - instance_id_t instance_id,
Get a const reference to the data instance of the given ID.
- Template Parameters:
T – The type of the data instance
- Parameters:
instance_id – The ID of the data instance
- Returns:
A const reference to the data instance
-
template<typename backend_ctx_untyped>
inline instance_id_t get_default_instance_id( - backend_ctx_untyped&,
- const logical_data_untyped &d,
- task &tp,
Returns the index (ID) of the data instance for this logical data in the current task context.
If this is called outside a task, this will result in an error.
- Parameters:
ctx – The backend context state
d – The logical data_untyped
- Returns:
The ID of the data instance for this logical data
-
inline virtual bool is_void_interface() const#
Indicates whether this is a void data interface, which permits to skip some operations to allocate or move data for example.
-
data_interface(const data_interface&) = delete#