20 #include <rmm/detail/error.hpp>
21 #include <rmm/detail/export.hpp>
22 #include <rmm/detail/thrust_namespace.h>
25 #include <cuda_runtime_api.h>
29 namespace RMM_NAMESPACE {
54 : cuda_pool_handle_{[pool_handle]() {
55 RMM_EXPECTS(
nullptr != pool_handle,
"意外的空内存池句柄。");
61 int cuda_pool_supported{};
63 cudaDeviceGetAttribute(&cuda_pool_supported, cudaDevAttrMemoryPoolsSupported, device.value());
64 RMM_EXPECTS(result == cudaSuccess && cuda_pool_supported,
65 "此 CUDA 驱动程序/运行时版本不支持 cudaMallocAsync");
73 [[nodiscard]] cudaMemPool_t
pool_handle() const noexcept {
return cuda_pool_handle_; }
87 cudaMemPool_t cuda_pool_handle_{};
102 RMM_CUDA_TRY_ALLOC(cudaMallocFromPoolAsync(&ptr, bytes, pool_handle(), stream.
value()),
116 void do_deallocate(
void* ptr,
117 [[maybe_unused]] std::size_t bytes,
120 if (ptr !=
nullptr) { RMM_ASSERT_CUDA_SUCCESS(cudaFreeAsync(ptr, stream.
value())); }
130 [[nodiscard]]
bool do_is_equal(device_memory_resource
const& other)
const noexcept
override
132 return dynamic_cast<cuda_async_view_memory_resource const*
>(&other) !=
nullptr;
具有默认构造函数的 CUDA 流的强类型非拥有包装器。
定义: cuda_stream_view.hpp:39
constexpr cudaStream_t value() const noexcept
获取包装的流。
定义: cuda_stream_view.hpp:73
使用 cudaMallocAsync/cudaFreeAsync 进行分配/释放的 device_memory_resource 派生类...
定义: cuda_async_view_memory_resource.hpp:41
cuda_async_view_memory_resource & operator=(cuda_async_view_memory_resource &&)=default
默认移动赋值运算符。
cuda_async_view_memory_resource(cuda_async_view_memory_resource &&)=default
默认移动构造函数。
cudaMemPool_t pool_handle() const noexcept
返回 CUDA 内存池的底层原生句柄。
定义: cuda_async_view_memory_resource.hpp:73
cuda_async_view_memory_resource(cudaMemPool_t pool_handle)
构造一个 cuda_async_view_memory_resource,它使用现有的 CUDA 内存池...。
定义: cuda_async_view_memory_resource.hpp:53
cuda_async_view_memory_resource(cuda_async_view_memory_resource const &)=default
默认复制构造函数。
cuda_async_view_memory_resource & operator=(cuda_async_view_memory_resource const &)=default
默认复制赋值运算符。
所有 librmm 设备内存分配的基类。
定义: device_memory_resource.hpp:92
cuda_device_id get_current_cuda_device()
返回当前设备的 cuda_device_id。
定义: cuda_device.hpp:99