模块 | |
设备内存资源 | |
主机内存资源 | |
设备资源适配器 | |
文件 | |
文件 | is_resource_adaptor.hpp |
文件 | pinned_host_memory_resource.hpp |
文件 | resource_ref.hpp |
类 | |
类 | rmm::mr::pinned_host_memory_resource |
用于分配 pinned 主机内存的内存资源类。 更多... | |
类型别名 | |
使用 | rmm::device_resource_ref = cuda::mr::resource_ref< cuda::mr::device_accessible > |
具有属性 cuda::mr::device_accessible 的 cuda::mr::resource_ref 的别名。 | |
使用 | rmm::device_async_resource_ref = cuda::mr::async_resource_ref< cuda::mr::device_accessible > |
具有属性 cuda::mr::device_accessible 的 cuda::mr::async_resource_ref 的别名。 | |
使用 | rmm::host_resource_ref = cuda::mr::resource_ref< cuda::mr::host_accessible > |
具有属性 cuda::mr::host_accessible 的 cuda::mr::resource_ref 的别名。 | |
使用 | rmm::host_async_resource_ref = cuda::mr::async_resource_ref< cuda::mr::host_accessible > |
具有属性 cuda::mr::host_accessible 的 cuda::mr::async_resource_ref 的别名。 | |
使用 | rmm::host_device_resource_ref = cuda::mr::resource_ref< cuda::mr::host_accessible, cuda::mr::device_accessible > |
具有属性 cuda::mr::host_accessible 和 cuda::mr::device_accessible 的 cuda::mr::resource_ref 的别名。 | |
使用 | rmm::host_device_async_resource_ref = cuda::mr::async_resource_ref< cuda::mr::host_accessible, cuda::mr::device_accessible > |
具有属性 cuda::mr::host_accessible 和 cuda::mr::device_accessible 的 cuda::mr::async_resource_ref 的别名。 | |
变量 | |
template<class Resource , class = void> | |
constexpr bool | rmm::mr::is_resource_adaptor = false |
通过检查是否存在 get_upstream_resource 来判断资源是否是资源适配器的概念。 | |
|
inline |
获取当前设备的内存资源。
返回为当前设备设置的资源指针。初始资源是一个 cuda_memory_resource
。
“当前设备”是由 cudaGetDevice
返回的设备。
此函数对于对 set_per_device_resource
、get_per_device_resource
、get_current_device_resource
和 set_current_device_resource
的并发调用是线程安全的。对这些函数中的任何一个进行并发调用将产生有效状态,但执行顺序是未定义的。
device_memory_resource
只能与当前的 CUDA 设备一起使用。更改当前设备(例如,使用 cudaSetDevice()
)然后使用返回的资源可能会导致未定义的行为。如果在活动的 CUDA 设备与创建 device_memory_resource 时活动的设备不同时使用 device_memory_resource,则其行为是未定义的。
|
inline |
获取当前设备的 device_async_resource_ref
。
返回为当前设备设置的 device_async_resource_ref
。初始 resource_ref 引用一个 cuda_memory_resource
。
“当前设备”是由 cudaGetDevice
返回的设备。
此函数对于对 set_per_device_resource_ref
、get_per_device_resource_ref
、get_current_device_resource_ref
、set_current_device_resource_ref
和 `reset_current_device_resource_ref 的并发调用是线程安全的。对这些函数中的任何一个进行并发调用将产生有效状态,但执行顺序是未定义的。
device_async_resource_ref
只能与当前的 CUDA 设备一起使用。更改当前设备(例如,使用 cudaSetDevice()
)然后使用返回的 resource_ref
可能会导致未定义的行为。如果在活动的 CUDA 设备与创建内存资源时活动的设备不同时使用 device_async_resource_ref
,则其行为是未定义的。device_async_resource_ref
|
inline |
获取指定设备的资源。
返回指定设备的 device_memory_resource
指针。初始资源是一个 cuda_memory_resource
。
device_id.value()
必须在范围 [0, cudaGetDeviceCount())
内,否则行为未定义。
此函数对于对 set_per_device_resource
、get_per_device_resource
、get_current_device_resource
和 set_current_device_resource
的并发调用是线程安全的。对这些函数中的任何一个进行并发调用将产生有效状态,但执行顺序是未定义的。
device_memory_resource
只能在 CUDA 设备 device_id
是当前设备时使用(例如,使用 cudaSetDevice()
设置)。如果在活动的 CUDA 设备与创建 device_memory_resource
时活动的设备不同时使用 device_memory_resource
,则其行为是未定义的。device_id | 目标设备的ID |
device_id
当前 device_memory_resource
的指针
|
inline |
获取指定设备的 device_async_resource_ref
。
返回指定设备的 device_async_resource_ref
。初始 resource_ref 引用一个 cuda_memory_resource
。
device_id.value()
必须在范围 [0, cudaGetDeviceCount())
内,否则行为未定义。
此函数对于对 set_per_device_resource_ref
、get_per_device_resource_ref
、get_current_device_resource_ref
、set_current_device_resource_ref
和 reset_current_device_resource_ref
的并发调用是线程安全的。对这些函数中的任何一个进行并发调用将产生有效状态,但执行顺序是未定义的。
device_async_resource_ref
只能在 CUDA 设备 device_id
是当前设备时使用(例如,使用 cudaSetDevice()
设置)。如果在活动的 CUDA 设备与创建内存资源时活动的设备不同时使用 device_async_resource_ref
,则其行为是未定义的。device_id | 目标设备的ID |
device_id
当前的 device_async_resource_ref
|
inline |
将当前设备的 device_async_resource_ref
重置为初始资源。
重置为引用初始 cuda_memory_resource
。 “当前设备”是由 cudaGetDevice
返回的设备。
此函数对于对 set_per_device_resource_ref
、get_per_device_resource_ref
、get_current_device_resource_ref
、set_current_device_resource_ref
和 `reset_current_device_resource_ref 的并发调用是线程安全的。对这些函数中的任何一个进行并发调用将产生有效状态,但执行顺序是未定义的。
device_id
之前的 device_async_resource_ref
|
inline |
将指定设备的 device_async_resource_ref
重置为初始资源。
重置为引用初始 cuda_memory_resource
。
device_id.value()
必须在范围 [0, cudaGetDeviceCount())
内,否则行为未定义。
此函数对于对 set_per_device_resource_ref
、get_per_device_resource_ref
、get_current_device_resource_ref
、set_current_device_resource_ref
和 `reset_current_device_resource_ref 的并发调用是线程安全的。对这些函数中的任何一个进行并发调用将产生有效状态,但执行顺序是未定义的。
device_id | 目标设备的ID |
device_id
之前的 device_async_resource_ref
|
inline |
设置当前设备的内存资源。
如果 new_mr
不是 nullptr
,则将当前设备的资源指针设置为 new_mr
。否则,将资源重置为初始 cuda_memory_resource
。
“当前设备”是由 cudaGetDevice
返回的设备。
new_mr
指向的对象必须在其最后一次使用资源之后仍然存在,否则行为未定义。调用者有责任维护资源对象的生命周期。
此函数对于对 set_per_device_resource
、get_per_device_resource
、get_current_device_resource
和 set_current_device_resource
的并发调用是线程安全的。对这些函数中的任何一个进行并发调用将产生有效状态,但执行顺序是未定义的。
new_mr
中传入的资源必须是在当前 CUDA 设备上创建的。如果在活动的 CUDA 设备与创建 device_memory_resource 时活动的设备不同时使用 device_memory_resource,则其行为是未定义的。new_mr | 如果不是 nullptr ,指向用于当前设备的新资源的指针 |
|
inline |
设置当前设备的 device_async_resource_ref
。
“当前设备”是由 cudaGetDevice
返回的设备。
new_resource_ref
引用的对象必须在其最后一次使用资源之后仍然存在,否则行为未定义。调用者有责任维护资源对象的生命周期。
此函数对于对 set_per_device_resource_ref
、get_per_device_resource_ref
、get_current_device_resource_ref
、set_current_device_resource_ref
和 `reset_current_device_resource_ref 的并发调用是线程安全的。对这些函数中的任何一个进行并发调用将产生有效状态,但执行顺序是未定义的。
new_resource
中传入的资源必须是在当前 CUDA 设备上创建的。如果在活动的 CUDA 设备与创建内存资源时活动的设备不同时使用 device_async_resource_ref
,则其行为是未定义的。new_resource_ref | 用于当前设备的新 device_async_resource_ref |
device_async_resource_ref
|
inline |
设置指定设备的 device_memory_resource
。
如果 new_mr
不是 nullptr
,则将 id
指定设备的内存资源指针设置为 new_mr
。否则,将 id
的资源重置为初始 cuda_memory_resource
。
id.value()
必须在范围 [0, cudaGetDeviceCount())
内,否则行为未定义。
new_mr
指向的对象必须在其最后一次使用资源之后仍然存在,否则行为未定义。调用者有责任维护资源对象的生命周期。
此函数对于对 set_per_device_resource
、get_per_device_resource
、get_current_device_resource
和 set_current_device_resource
的并发调用是线程安全的。对这些函数中的任何一个进行并发调用将产生有效状态,但执行顺序是未定义的。
new_mr
中传入的资源必须是在设备 id
是当前 CUDA 设备时创建的(例如,使用 cudaSetDevice()
设置)。如果在活动的 CUDA 设备与创建 device_memory_resource 时活动的设备不同时使用 device_memory_resource,则其行为是未定义的。device_id | 目标设备的ID |
new_mr | 如果不是 nullptr ,指向新的 device_memory_resource 的指针,用作 id 的新资源 |
id
之前内存资源的指针
|
inline |
将指定设备的 device_async_resource_ref
设置为 new_resource_ref
device_id.value()
必须在范围 [0, cudaGetDeviceCount())
内,否则行为未定义。
new_resource_ref
引用的对象必须在其最后一次使用资源之后仍然存在,否则行为未定义。调用者有责任维护资源对象的生命周期。
此函数对于对 set_per_device_resource_ref
、get_per_device_resource_ref
、get_current_device_resource_ref
、set_current_device_resource_ref
和 `reset_current_device_resource_ref 的并发调用是线程安全的。对这些函数中的任何一个进行并发调用将产生有效状态,但执行顺序是未定义的。
new_resource_ref
中传入的资源必须是在设备 device_id
是当前 CUDA 设备时创建的(例如,使用 cudaSetDevice()
设置)。如果在活动的 CUDA 设备与创建内存资源时活动的设备不同时使用 device_async_resource_ref
,则其行为是未定义的。device_id | 目标设备的ID |
new_resource_ref | 新的 device_async_resource_ref ,用作设备 device_id 的新资源 |
device_id
之前的 device_async_resource_ref
device_async_resource_ref rmm::to_device_async_resource_ref_checked | ( | Resource * | res | ) |
将内存资源的指针转换为 device_async_resource_ref
,并检查是否为 nullptr
Resource | 内存资源的类型。 |
res | 指向内存资源的指针。 |
device_async_resource_ref
。std::logic_error | 如果内存资源指针为空。 |