memory

memory#

stdgpu: memory
stdgpu Latest
Efficient STL-like Data Structures on the GPU

Detailed Description

Classes

struct  stdgpu::allocator_traits< Allocator >
 
class  stdgpu::device_unique_object< T >
 
struct  stdgpu::null_object_t
 
struct  stdgpu::safe_device_allocator< T >
 
struct  stdgpu::safe_host_allocator< T >
 
struct  stdgpu::safe_managed_allocator< T >
 

Enumerations

enum class  stdgpu::dynamic_memory_type { dynamic_memory_type::host , dynamic_memory_type::device , dynamic_memory_type::managed , dynamic_memory_type::invalid }
 
enum class  Initialization { Initialization::HOST , Initialization::DEVICE }
 
enum class  MemoryCopy { MemoryCopy::NO_CHECK , MemoryCopy::RANGE_CHECK }
 

Functions

template<typename T , typename... Args>
STDGPU_HOST_DEVICE T * stdgpu::construct_at (T *p, Args &&... args)
 
template<typename T >
T * copyCreateDevice2DeviceArray (const T *device_array, const stdgpu::index64_t count, const MemoryCopy check_safety=MemoryCopy::RANGE_CHECK)
 
template<typename T >
T * copyCreateDevice2HostArray (const T *device_array, const stdgpu::index64_t count, const MemoryCopy check_safety=MemoryCopy::RANGE_CHECK)
 
template<typename T >
T * copyCreateHost2DeviceArray (const T *host_array, const stdgpu::index64_t count, const MemoryCopy check_safety=MemoryCopy::RANGE_CHECK)
 
template<typename T >
T * copyCreateHost2HostArray (const T *host_array, const stdgpu::index64_t count, const MemoryCopy check_safety=MemoryCopy::RANGE_CHECK)
 
template<typename T >
void copyDevice2DeviceArray (const T *source_device_array, const stdgpu::index64_t count, T *destination_device_array, const MemoryCopy check_safety=MemoryCopy::RANGE_CHECK)
 
template<typename T >
void copyDevice2HostArray (const T *source_device_array, const stdgpu::index64_t count, T *destination_host_array, const MemoryCopy check_safety=MemoryCopy::RANGE_CHECK)
 
template<typename T >
void copyHost2DeviceArray (const T *source_host_array, const stdgpu::index64_t count, T *destination_device_array, const MemoryCopy check_safety=MemoryCopy::RANGE_CHECK)
 
template<typename T >
void copyHost2HostArray (const T *source_host_array, const stdgpu::index64_t count, T *destination_host_array, const MemoryCopy check_safety=MemoryCopy::RANGE_CHECK)
 
template<typename T >
T * createDeviceArray (const stdgpu::index64_t count, const T default_value=T())
 
template<typename T >
T * createHostArray (const stdgpu::index64_t count, const T default_value=T())
 
template<typename T >
T * createManagedArray (const stdgpu::index64_t count, const T default_value=T(), const Initialization initialize_on=Initialization::DEVICE)
 
template<typename T >
void stdgpu::deregister_memory (T *p, index64_t n, dynamic_memory_type memory_type)
 
template<typename ExecutionPolicy , typename Iterator , STDGPU_DETAIL_OVERLOAD_IF(is_execution_policy_v< remove_cvref_t< ExecutionPolicy > >) >
void stdgpu::destroy (ExecutionPolicy &&policy, Iterator first, Iterator last)
 
template<typename T >
STDGPU_HOST_DEVICE void stdgpu::destroy_at (T *p)
 
template<typename ExecutionPolicy , typename Iterator , typename Size , STDGPU_DETAIL_OVERLOAD_IF(is_execution_policy_v< remove_cvref_t< ExecutionPolicy > >) >
Iterator stdgpu::destroy_n (ExecutionPolicy &&policy, Iterator first, Size n)
 
template<typename T >
void destroyDeviceArray (T *&device_array)
 
template<typename T >
void destroyHostArray (T *&host_array)
 
template<typename T >
void destroyManagedArray (T *&managed_array)
 
index64_t stdgpu::get_allocation_count (dynamic_memory_type memory_type)
 
index64_t stdgpu::get_deallocation_count (dynamic_memory_type memory_type)
 
template<typename T >
dynamic_memory_type stdgpu::get_dynamic_memory_type (T *array)
 
template<typename T >
void stdgpu::register_memory (T *p, index64_t n, dynamic_memory_type memory_type)
 
template<typename T >
index64_t stdgpu::size_bytes (T *array)
 
template<typename Ptr , STDGPU_DETAIL_OVERLOAD_IF(detail::has_arrow_operator_v< Ptr >) >
STDGPU_HOST_DEVICE auto stdgpu::to_address (const Ptr &p) noexcept
 
template<typename T >
STDGPU_HOST_DEVICE T * stdgpu::to_address (T *p) noexcept
 
template<typename ExecutionPolicy , typename InputIt , typename OutputIt , STDGPU_DETAIL_OVERLOAD_IF(is_execution_policy_v< remove_cvref_t< ExecutionPolicy > >) >
OutputIt stdgpu::uninitialized_copy (ExecutionPolicy &&policy, InputIt begin, InputIt end, OutputIt output_begin)
 
template<typename ExecutionPolicy , typename InputIt , typename Size , typename OutputIt , STDGPU_DETAIL_OVERLOAD_IF(is_execution_policy_v< remove_cvref_t< ExecutionPolicy > >) >
OutputIt stdgpu::uninitialized_copy_n (ExecutionPolicy &&policy, InputIt begin, Size n, OutputIt output_begin)
 
template<typename ExecutionPolicy , typename Iterator , typename T , STDGPU_DETAIL_OVERLOAD_IF(is_execution_policy_v< remove_cvref_t< ExecutionPolicy > >) >
void stdgpu::uninitialized_fill (ExecutionPolicy &&policy, Iterator begin, Iterator end, const T &value)
 
template<typename ExecutionPolicy , typename Iterator , typename Size , typename T , STDGPU_DETAIL_OVERLOAD_IF(is_execution_policy_v< remove_cvref_t< ExecutionPolicy > >) >
Iterator stdgpu::uninitialized_fill_n (ExecutionPolicy &&policy, Iterator begin, Size n, const T &value)
 

Variables

constexpr null_object_t stdgpu::null_object