temporary_device_buffer: Temporary raft::device_mdspan Producing Object#

#include <raft/core/temporary_device_buffer.hpp>

template<typename ElementType, typename Extents, typename LayoutPolicy = layout_c_contiguous, template<typename> typename ContainerPolicy = device_uvector_policy>
class temporary_device_buffer#
#include <temporary_device_buffer.hpp>

An object which provides temporary access on-device to memory from either a host or device pointer. This object provides a view() method that will provide a raft::device_mdspan that may be read-only depending on const-qualified nature of the input pointer.

Template Parameters:
  • ElementType – type of the input

  • Extents – raft::extents

  • LayoutPolicy – layout of the input

  • ContainerPolicy – container to be used to own device memory if needed

Public Functions

inline temporary_device_buffer(resources const &handle, ElementType *data, Extents extents, bool write_back = false)#

Construct a new temporary device buffer object.

Parameters:
  • handle – raft::resources

  • data – input pointer

  • extents – dimensions of input array

  • write_back – if true, any writes to the view() of this object will be copid back if the original pointer was in host memory

inline auto view() -> view_type#

Returns a raft::device_mdspan

Returns:

raft::device_mdspan

Factories#

template<typename ElementType, typename IndexType = std::uint32_t, typename LayoutPolicy = layout_c_contiguous, template<typename> typename ContainerPolicy = device_uvector_policy, size_t... Extents>
auto make_temporary_device_buffer(raft::resources const &handle, ElementType *data, raft::extents<IndexType, Extents...> extents, bool write_back = false)#

Factory to create a raft::temporary_device_buffer

#include <raft/core/resources.hpp>

raft::resources handle;

// Initialize raft::device_mdarray and raft::extents
// Can be either raft::device_mdarray or raft::host_mdarray
auto exts  = raft::make_extents<int>(5);
auto array = raft::make_device_mdarray<int, int>(handle, exts);

auto d_buf = raft::make_temporary_device_buffer(handle, array.data_handle(), exts);
Template Parameters:
  • ElementType – type of the input

  • IndexType – index type of raft::extents

  • LayoutPolicy – layout of the input

  • ContainerPolicy – container to be used to own device memory if needed

  • Extents – variadic dimensions for raft::extents

Parameters:
  • handle – raft::resources

  • data – input pointer

  • extents – dimensions of input array

  • write_back – if true, any writes to the view() of this object will be copid back if the original pointer was in host memory

Returns:

raft::temporary_device_buffer

template<typename ElementType, typename IndexType = std::uint32_t, typename LayoutPolicy = layout_c_contiguous, template<typename> typename ContainerPolicy = device_uvector_policy, size_t... Extents>
auto make_readonly_temporary_device_buffer(raft::resources const &handle, ElementType *data, raft::extents<IndexType, Extents...> extents)#

Factory to create a raft::temporary_device_buffer which produces a read-only raft::device_mdspan from view() method with write_back=false

#include <raft/core/resources.hpp>

raft::resources handle;

// Initialize raft::device_mdarray and raft::extents
// Can be either raft::device_mdarray or raft::host_mdarray
auto exts  = raft::make_extents<int>(5);
auto array = raft::make_device_mdarray<int, int>(handle, exts);

auto d_buf = raft::make_readonly_temporary_device_buffer(handle, array.data_handle(), exts);
Template Parameters:
  • ElementType – type of the input

  • IndexType – index type of raft::extents

  • LayoutPolicy – layout of the input

  • ContainerPolicy – container to be used to own device memory if needed

  • Extents – variadic dimensions for raft::extents

Parameters:
  • handle – raft::resources

  • data – input pointer

  • extents – dimensions of input array

Returns:

raft::temporary_device_buffer

template<typename ElementType, typename IndexType = std::uint32_t, typename LayoutPolicy = layout_c_contiguous, template<typename> typename ContainerPolicy = device_uvector_policy, size_t... Extents, typename = std::enable_if_t<not std::is_const_v<ElementType>>>
auto make_writeback_temporary_device_buffer(raft::resources const &handle, ElementType *data, raft::extents<IndexType, Extents...> extents)#

Factory to create a raft::temporary_device_buffer which produces a writeable raft::device_mdspan from view() method with write_back=true

#include <raft/core/resources.hpp>

raft::resources handle;

// Initialize raft::host_mdarray and raft::extents
// Can be either raft::device_mdarray or raft::host_mdarray
auto exts  = raft::make_extents<int>(5);
auto array = raft::make_host_mdarray<int, int>(handle, exts);

auto d_buf = raft::make_writeback_temporary_device_buffer(handle, array.data_handle(), exts);
Template Parameters:
  • ElementType – type of the input

  • IndexType – index type of raft::extents

  • LayoutPolicy – layout of the input

  • ContainerPolicy – container to be used to own device memory if needed

  • Extents – variadic dimensions for raft::extents

Parameters:
  • handle – raft::resources

  • data – input pointer

  • extents – dimensions of input array

Returns:

raft::temporary_device_buffer