A builder-ish subclass template around the basic 2D or 3D copy parameters which CUDA's complex copying API actually takes.
More...
|
bool | is_intra_context () const noexcept |
|
this_type & | set_context (endpoint_t endpoint, const context_t &context) noexcept |
| Set the context for one end of the copy operation.
|
|
this_type & | set_single_context (const context_t &context) noexcept |
| Set the same context for both endpoints of the copy operation.
|
|
template<typename T > |
this_type & | set_endpoint (endpoint_t endpoint, const cuda::array_t< T, NumDimensions > &array) noexcept |
| Set one of the copy endpoints to a CUDA array. More...
|
|
this_type & | set_endpoint_untyped (endpoint_t endpoint, context::handle_t context_handle, void *ptr, dimensions_type dimensions) |
| Set one of the copy endpoints to a multi-dimensional elements, with dimensions specified in bytes rather than actual elements, starting somewhere in memory (in any CUDA memory space) More...
|
|
template<typename T > |
this_type & | set_endpoint (endpoint_t endpoint, span< T > span) noexcept |
| Set one of the copy endpoints to a multi-dimensional elements, starting at the beginning of a span of memory (in any CUDA memory space) More...
|
|
template<typename T > |
this_type & | set_source (const cuda::array_t< T, NumDimensions > &array) noexcept |
| Set the source endpoint of the copy operation to be a CUDA array. More...
|
|
this_type & | set_source_untyped (context::handle_t context_handle, void *ptr, dimensions_type dimensions) |
| Set the source of the copy operation to be a sequence of multi-dimensional elements, with dimensions specified in bytes rather than actual elements, starting somewhere in memory (in any CUDA memory space) More...
|
|
template<typename T > |
this_type & | set_source (span< T > span) noexcept |
| Set one of the copy endpoints to a multi-dimensional elements, starting at the beginning of a span of memory (in any CUDA memory space) More...
|
|
template<typename T > |
this_type & | set_destination (const cuda::array_t< T, NumDimensions > &array) noexcept |
| Set the source endpoint of the copy operation to be a CUDA array. More...
|
|
void | set_destination_untyped (context::handle_t context_handle, void *ptr, dimensions_type dimensions) noexcept |
| Set the destination of the copy operation to be a sequence of multi-dimensional elements, with dimensions specified in bytes rather than actual elements, starting somewhere in memory (in any CUDA memory space) More...
|
|
template<typename T > |
this_type & | set_destination (span< T > span) noexcept |
| Set the desintation of the copy operation to a range of multi-dimensional elements, starting at the beginning of a span of memory (in any CUDA memory space) More...
|
|
this_type & | set_bytes_offset (endpoint_t endpoint, dimensions_type offset) noexcept |
| Set the (multi-dimensional) offset, in bytes, into multidimensional range of elements at one of the endpoints of the copy operation.
|
|
template<typename T > |
this_type & | set_offset (endpoint_t endpoint, dimensions_type offset) noexcept |
| Set the (multi-dimensional) offset, in elements, into multidimensional range of elements at one of the endpoints of the copy operation.
|
|
this_type & | clear_offset (endpoint_t endpoint) noexcept |
| Set the copy operation to use the multi-dimensional region of the specified endpoint without skipping any offset-elements into it.
|
|
this_type & | clear_offsets () noexcept |
| Clear the offsets into both the source and the destination endpoint regions.
|
|
this_type & | set_bytes_pitch (endpoint_t endpoint, dimension_type pitch_in_bytes) noexcept |
| Set the difference, in bytes, between the beginning of sequences of the minor-most dimension, for consecutive coordinates in the second minor-most dimension - within the multi-dimensional regions of one of the copy operation endpoints.
|
|
template<typename T > |
this_type & | set_pitch (endpoint_t endpoint, dimension_type pitch_in_elements) noexcept |
| Set the difference, in elements, between the beginning of sequences of the minor-most dimension, for consecutive coordinates in the second minor-most dimension - within the multi-dimensional regions of one of the copy operation endpoints.
|
|
template<typename T > |
this_type & | set_pitches (dimension_type uniform_pitch_in_elements) noexcept |
| Set the difference, in elements, between the beginning of sequences of the minor-most dimension, for consecutive coordinates in the second minor-most dimension - within the multi-dimensional regions of both of the copy operation endpoints.
|
|
this_type & | set_default_pitch (endpoint_t endpoint) noexcept |
|
this_type & | set_default_pitches () noexcept |
|
this_type & | set_bytes_extent (dimensions_type extent_in_bytes) noexcept |
| Set how much is to be copied in each dimension - in bytes. More...
|
|
template<typename T > |
this_type & | set_extent (dimensions_type extent_in_elements) noexcept |
| Set how much is to be copied in each dimension - in elements. More...
|
|
dimensions_type | bytes_extent () const noexcept |
|
template<typename T > |
dimensions_type | extent () const noexcept |
|
this_type & | set_pitches (dimension_type uniform_pitch_in_bytes) noexcept |
|
this_type & | clear_rest () noexcept |
|
template<> |
copy_parameters_t< 2 > & | set_endpoint_untyped (endpoint_t endpoint, context::handle_t, void *ptr, array::dimensions_t< 2 > dimensions) |
|
template<> |
copy_parameters_t< 3 > & | set_endpoint_untyped (endpoint_t endpoint, context::handle_t, void *ptr, array::dimensions_t< 3 > dimensions) |
|
template<> |
copy_parameters_t< 2 > & | set_endpoint (endpoint_t endpoint, context::handle_t context_handle, T *ptr, array::dimensions_t< 2 > dimensions) noexcept |
|
template<> |
copy_parameters_t< 2 > & | set_endpoint (endpoint_t endpoint, T *ptr, array::dimensions_t< 2 > dimensions) |
|
template<> |
copy_parameters_t< 2 > & | set_endpoint (endpoint_t endpoint, const cuda::array_t< T, 2 > &array) noexcept |
|
template<> |
copy_parameters_t< 3 > & | set_endpoint (endpoint_t endpoint, const cuda::array_t< T, 3 > &array) noexcept |
|
template<> |
copy_parameters_t< 2 > & | set_context (endpoint_t endpoint, const context_t &context) noexcept=delete |
|
template<> |
copy_parameters_t< 3 > & | set_context (endpoint_t endpoint, const context_t &context) noexcept |
|
template<> |
copy_parameters_t< 3 > & | set_endpoint (endpoint_t endpoint, context::handle_t context_handle, T *ptr, array::dimensions_t< 3 > dimensions) noexcept |
|
template<> |
copy_parameters_t< 3 > & | set_endpoint (endpoint_t endpoint, T *ptr, array::dimensions_t< 3 > dimensions) |
|
template<> |
copy_parameters_t< 2 > & | clear_rest () noexcept |
|
template<> |
copy_parameters_t< 3 > & | clear_rest () noexcept |
|
template<> |
copy_parameters_t< 2 > & | set_extent (dimensions_type extent_in_elements) noexcept |
|
template<> |
copy_parameters_t< 2 > & | set_bytes_extent (dimensions_type extent_in_elements) noexcept |
|
template<> |
copy_parameters_t< 3 > & | set_bytes_extent (dimensions_type extent_in_elements) noexcept |
|
template<> |
copy_parameters_t< 2 >::dimensions_type | bytes_extent () const noexcept |
|
template<> |
copy_parameters_t< 3 >::dimensions_type | bytes_extent () const noexcept |
|
template<> |
copy_parameters_t< 2 > & | set_endpoint_untyped (endpoint_t endpoint, context::handle_t, void *ptr, array::dimensions_t< 2 > dimensions) |
|
template<> |
copy_parameters_t< 3 > & | set_endpoint_untyped (endpoint_t endpoint, context::handle_t context_handle, void *ptr, array::dimensions_t< 3 > dimensions) |
|
template<> |
copy_parameters_t< 3 > & | set_extent (dimensions_type extent_in_elements) noexcept |
|
template<> |
copy_parameters_t< 3 > & | set_bytes_offset (endpoint_t endpoint, dimensions_type offset) noexcept |
|
template<> |
copy_parameters_t< 2 > & | set_bytes_offset (endpoint_t endpoint, dimensions_type offset) noexcept |
|
template<> |
copy_parameters_t< 3 > & | set_offset (endpoint_t endpoint, dimensions_type offset) noexcept |
|
template<> |
copy_parameters_t< 2 > & | set_offset (endpoint_t endpoint, dimensions_type offset) noexcept |
|
|
template<typename T > |
this_type & | set_endpoint (endpoint_t endpoint, T *ptr, dimensions_type dimensions) |
| Set one of the copy endpoints to a multi-dimensional elements, starting somewhere in memory (in any CUDA memory space) More...
|
|
template<typename T > |
this_type & | set_endpoint (endpoint_t endpoint, context::handle_t context_handle, T *ptr, dimensions_type dimensions) noexcept |
|
|
template<typename T > |
this_type & | set_source (T *ptr, dimensions_type dimensions) noexcept |
| Set one of the copy endpoints to a multi-dimensional elements, starting somewhere in memory (in any CUDA memory space) More...
|
|
template<typename T > |
this_type & | set_source (context::handle_t context_handle, T *ptr, dimensions_type dimensions) noexcept |
|
|
template<typename T > |
this_type & | set_destination (T *ptr, dimensions_type dimensions) noexcept |
| Set one of the copy endpoints to a multi-dimensional elements, starting somewhere in memory (in any CUDA memory space) More...
|
|
template<typename T > |
this_type & | set_destination (context::handle_t context_handle, T *ptr, dimensions_type dimensions) noexcept |
|
template<dimensionality_t NumDimensions>
struct cuda::memory::copy_parameters_t< NumDimensions >
A builder-ish subclass template around the basic 2D or 3D copy parameters which CUDA's complex copying API actually takes.
{
- Note
- This class is not "safe", in the sense that there is currently no checks to ensure you've actively set all fields properly before passing it on to the CUDA driver.}
{
- Note
- this class cannot hold reference units to any contexts or allocated memory, so one must ensure every resource relevant to the source and the destination remains alive until the copy operation is both scheduled and executed.}