20 #include <rmm/detail/aligned.hpp>
21 #include <rmm/detail/error.hpp>
22 #include <rmm/detail/export.hpp>
27 namespace RMM_NAMESPACE {
64 return do_allocate(bytes, alignment);
78 return do_allocate(bytes);
114 void* do_allocate(std::size_t bytes, std::size_t alignment =
alignof(std::max_align_t))
override
117 if (0 == bytes) {
return nullptr; }
123 return rmm::detail::aligned_host_allocate(bytes, alignment, [](std::size_t size) {
125 RMM_CUDA_TRY_ALLOC(cudaMallocHost(&ptr, size), size);
143 void do_deallocate(
void* ptr,
145 std::size_t alignment =
alignof(std::max_align_t))
override
147 if (
nullptr == ptr) {
return; }
148 rmm::detail::aligned_host_deallocate(
149 ptr, bytes, alignment, [](
void* ptr) { RMM_ASSERT_CUDA_SUCCESS(cudaFreeHost(ptr)); });
152 static_assert(cuda::mr::async_resource_with<pinned_memory_resource,
153 cuda::mr::host_accessible,
154 cuda::mr::device_accessible>);
具有默认构造函数的、强类型、非拥有型的 CUDA 流包装器。
定义: cuda_stream_view.hpp:39
用于主机内存分配的基类。
定义: host_memory_resource.hpp:56
使用 cudaMallocHost 分配锁定/页锁定主机内存的 host_memory_resource。
定义: pinned_memory_resource.hpp:41
friend void get_property(pinned_memory_resource const &, cuda::mr::device_accessible) noexcept
启用 cuda::mr::device_accessible 属性。
定义: pinned_memory_resource.hpp:99
void * allocate_async(std::size_t bytes, cuda_stream_view)
假装支持 allocate_async 接口,实际回退到流 0。
定义: pinned_memory_resource.hpp:76
pinned_memory_resource & operator=(pinned_memory_resource const &)=default
默认拷贝赋值运算符。
pinned_memory_resource(pinned_memory_resource &&)=default
默认移动构造函数。
pinned_memory_resource & operator=(pinned_memory_resource &&)=default
默认移动赋值运算符。
void * allocate_async(std::size_t bytes, std::size_t alignment, cuda_stream_view)
假装支持 allocate_async 接口,实际回退到流 0。
定义: pinned_memory_resource.hpp:62
void deallocate_async(void *ptr, std::size_t bytes, std::size_t alignment, cuda_stream_view)
假装支持 deallocate_async 接口,实际回退到流 0。
定义: pinned_memory_resource.hpp:89
pinned_memory_resource(pinned_memory_resource const &)=default
默认拷贝构造函数。
static constexpr std::size_t RMM_DEFAULT_HOST_ALIGNMENT
RMM 分配主机内存时使用的默认对齐。
定义: aligned.hpp:37
constexpr bool is_supported_alignment(std::size_t alignment) noexcept
返回对齐是否是有效的内存对齐。
定义: aligned.hpp:64
constexpr std::size_t align_up(std::size_t value, std::size_t alignment) noexcept
向上对齐到指定 2 的幂的最近倍数。
定义: aligned.hpp:77