A container which may or may not own its own data on host or device. More...
#include <buffer.hpp>

Public Types | |
| using | index_type = std::size_t | 
| using | value_type = T | 
| using | data_store = std::variant< non_owning_buffer< device_type::cpu, T >, non_owning_buffer< device_type::gpu, T >, owning_buffer< device_type::cpu, T >, owning_buffer< device_type::gpu, T > > | 
Public Member Functions | |
| buffer () | |
| buffer (index_type size, device_type mem_type=device_type::cpu, int device=0, cuda_stream stream=0) | |
| buffer (T *input_data, index_type size, device_type mem_type=device_type::cpu, int device=0) | |
| buffer (buffer< T > const &other, device_type mem_type, int device=0, cuda_stream stream=cuda_stream{}) | |
| Construct one buffer from another in the given memory location (either on host or on device) A buffer constructed in this way is owning and will copy the data from the original location.  More... | |
| buffer (buffer< T > const &other, cuda_stream stream=cuda_stream{}) | |
| Create owning copy of existing buffer with given stream The memory type of this new buffer will be the same as the original.  More... | |
| buffer< T > & | operator= (buffer< T > const &other) | 
| buffer (buffer< T > &&other, device_type mem_type, int device, cuda_stream stream) | |
| Move from existing buffer unless a copy is necessary based on memory location.  More... | |
| buffer (buffer< T > &&other, device_type mem_type, int device) | |
| buffer (buffer< T > &&other, device_type mem_type) | |
| buffer (buffer< T > &&other) noexcept | |
| buffer< T > & | operator= (buffer< T > &&other) noexcept | 
| template<typename iter_t , typename = decltype(*std::declval<iter_t&>(), void(), ++std::declval<iter_t&>(), void())> | |
| buffer (iter_t const &begin, iter_t const &end) | |
| template<typename iter_t , typename = decltype(*std::declval<iter_t&>(), void(), ++std::declval<iter_t&>(), void())> | |
| buffer (iter_t const &begin, iter_t const &end, device_type mem_type) | |
| template<typename iter_t , typename = decltype(*std::declval<iter_t&>(), void(), ++std::declval<iter_t&>(), void())> | |
| buffer (iter_t const &begin, iter_t const &end, device_type mem_type, int device, cuda_stream stream=cuda_stream{}) | |
| auto | size () const noexcept | 
| HOST DEVICE auto * | data () const noexcept | 
| auto | memory_type () const noexcept | 
| auto | device () const noexcept | 
| auto | device_index () const noexcept | 
| ~buffer ()=default | |
Friends | |
| void | swap (buffer< T > &first, buffer< T > &second) | 
| Create owning copy of existing buffer The memory type of this new buffer will be the same as the original.  More... | |
A container which may or may not own its own data on host or device.
| using raft_proto::buffer< T >::data_store = std::variant<non_owning_buffer<device_type::cpu, T>, non_owning_buffer<device_type::gpu, T>, owning_buffer<device_type::cpu, T>, owning_buffer<device_type::gpu, T> > | 
| using raft_proto::buffer< T >::index_type = std::size_t | 
| using raft_proto::buffer< T >::value_type = T | 
      
  | 
  inline | 
      
  | 
  inline | 
Construct non-initialized owning buffer
      
  | 
  inline | 
Construct non-owning buffer
      
  | 
  inline | 
Construct one buffer from another in the given memory location (either on host or on device) A buffer constructed in this way is owning and will copy the data from the original location.
      
  | 
  inline | 
Create owning copy of existing buffer with given stream The memory type of this new buffer will be the same as the original.
      
  | 
  inline | 
Move from existing buffer unless a copy is necessary based on memory location.
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inlinenoexcept | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  inline | 
      
  | 
  default | 
      
  | 
  inlinenoexcept | 
      
  | 
  inlinenoexcept | 
      
  | 
  inlinenoexcept | 
      
  | 
  inlinenoexcept | 
      
  | 
  inlinenoexcept | 
      
  | 
  inline | 
      
  | 
  inlinenoexcept | 
Create owning copy of existing buffer The memory type of this new buffer will be the same as the original.