6 #include <cuda_runtime.h> 17 if (n > std::size_t(-1) /
sizeof(T))
18 throw std::bad_alloc();
20 cudaError_t err = cudaMallocManaged(&p, n *
sizeof(T));
21 if (err != cudaSuccess)
23 throw std::bad_alloc();
27 void deallocate(T *p, std::size_t) noexcept { cudaFree(p); }
29 template <
class T,
class U>
31 template <
class T,
class U>
bool operator!=(const CUDAManagedAllocator< T > &, const CUDAManagedAllocator< U > &)
Definition: cuda_managed.hpp:32
T * allocate(std::size_t n)
Definition: cuda_managed.hpp:15
bool operator==(const CUDAManagedAllocator< T > &, const CUDAManagedAllocator< U > &)
Definition: cuda_managed.hpp:30
constexpr CUDAManagedAllocator(const CUDAManagedAllocator< U > &) noexcept
Definition: cuda_managed.hpp:14
Definition: cuda_managed.hpp:9
void deallocate(T *p, std::size_t) noexcept
Definition: cuda_managed.hpp:27
T value_type
Definition: cuda_managed.hpp:11
CUDAManagedAllocator()=default