Modules | |
Device Memory Resources | |
Host Memory Resources | |
Device Resource Adaptors | |
Files | |
file | is_resource_adaptor.hpp |
file | pinned_host_memory_resource.hpp |
file | resource_ref.hpp |
Classes | |
class | rmm::mr::pinned_host_memory_resource |
Memory resource class for allocating pinned host memory. More... | |
Typedefs | |
using | rmm::device_resource_ref = cuda::mr::resource_ref< cuda::mr::device_accessible > |
Alias for a cuda::mr::resource_ref with the property cuda::mr::device_accessible . | |
using | rmm::device_async_resource_ref = cuda::mr::async_resource_ref< cuda::mr::device_accessible > |
Alias for a cuda::mr::async_resource_ref with the property cuda::mr::device_accessible . | |
using | rmm::host_resource_ref = cuda::mr::resource_ref< cuda::mr::host_accessible > |
Alias for a cuda::mr::resource_ref with the property cuda::mr::host_accessible . | |
using | rmm::host_async_resource_ref = cuda::mr::async_resource_ref< cuda::mr::host_accessible > |
Alias for a cuda::mr::async_resource_ref with the property cuda::mr::host_accessible . | |
using | rmm::host_device_resource_ref = cuda::mr::resource_ref< cuda::mr::host_accessible, cuda::mr::device_accessible > |
Alias for a cuda::mr::resource_ref with the properties cuda::mr::host_accessible and cuda::mr::device_accessible . | |
using | rmm::host_device_async_resource_ref = cuda::mr::async_resource_ref< cuda::mr::host_accessible, cuda::mr::device_accessible > |
Alias for a cuda::mr::async_resource_ref with the properties cuda::mr::host_accessible and cuda::mr::device_accessible . | |
Variables | |
template<class Resource , class = void> | |
constexpr bool | rmm::mr::is_resource_adaptor = false |
Concept to check whether a resource is a resource adaptor by checking for get_upstream_resource . | |
|
inline |
Get the memory resource for the current device.
Returns a pointer to the resource set for the current device. The initial resource is a cuda_memory_resource
.
The "current device" is the device returned by cudaGetDevice
.
This function is thread-safe with respect to concurrent calls to set_per_device_resource
, get_per_device_resource
, get_current_device_resource
, and set_current_device_resource
. Concurrent calls to any of these functions will result in a valid state, but the order of execution is undefined.
device_memory_resource
should only be used with the current CUDA device. Changing the current device (e.g. using cudaSetDevice()
) and then using the returned resource can result in undefined behavior. The behavior of a device_memory_resource is undefined if used while the active CUDA device is a different device from the one that was active when the device_memory_resource was created.
|
inline |
Get the device_async_resource_ref
for the current device.
Returns the device_async_resource_ref
set for the current device. The initial resource_ref references a cuda_memory_resource
.
The "current device" is the device returned by cudaGetDevice
.
This function is thread-safe with respect to concurrent calls to set_per_device_resource_ref
, get_per_device_resource_ref
, get_current_device_resource_ref
, set_current_device_resource_ref
and `reset_current_device_resource_ref. Concurrent calls to any of these functions will result in a valid state, but the order of execution is undefined.
device_async_resource_ref
should only be used with the current CUDA device. Changing the current device (e.g. using cudaSetDevice()
) and then using the returned resource_ref
can result in undefined behavior. The behavior of a device_async_resource_ref
is undefined if used while the active CUDA device is a different device from the one that was active when the memory resource was created.device_async_resource_ref
active for the current device
|
inline |
Get the resource for the specified device.
Returns a pointer to the device_memory_resource
for the specified device. The initial resource is a cuda_memory_resource
.
device_id.value()
must be in the range [0, cudaGetDeviceCount())
, otherwise behavior is undefined.
This function is thread-safe with respect to concurrent calls to set_per_device_resource
, get_per_device_resource
, get_current_device_resource
, and set_current_device_resource
. Concurrent calls to any of these functions will result in a valid state, but the order of execution is undefined.
device_memory_resource
should only be used when CUDA device device_id
is the current device (e.g. set using cudaSetDevice()
). The behavior of a device_memory_resource
is undefined if used while the active CUDA device is a different device from the one that was active when the device_memory_resource
was created.device_id | The id of the target device |
device_memory_resource
for device device_id
|
inline |
Get the device_async_resource_ref
for the specified device.
Returns a device_async_resource_ref
for the specified device. The initial resource_ref references a cuda_memory_resource
.
device_id.value()
must be in the range [0, cudaGetDeviceCount())
, otherwise behavior is undefined.
This function is thread-safe with respect to concurrent calls to set_per_device_resource_ref
, get_per_device_resource_ref
, get_current_device_resource_ref
, set_current_device_resource_ref
and reset_current_device_resource_ref
. Concurrent calls to any of these functions will result in a valid state, but the order of execution is undefined.
device_async_resource_ref
should only be used when CUDA device device_id
is the current device (e.g. set using cudaSetDevice()
). The behavior of a device_async_resource_ref
is undefined if used while the active CUDA device is a different device from the one that was active when the memory resource was created.device_id | The id of the target device |
device_async_resource_ref
for device device_id
|
inline |
Reset the device_async_resource_ref
for the current device to the initial resource.
Resets to a reference to the initial cuda_memory_resource
. The "current device" is the device returned by cudaGetDevice
.
This function is thread-safe with respect to concurrent calls to set_per_device_resource_ref
, get_per_device_resource_ref
, get_current_device_resource_ref
, set_current_device_resource_ref
and `reset_current_device_resource_ref. Concurrent calls to any of these functions will result in a valid state, but the order of execution is undefined.
device_async_resource_ref
for device_id
|
inline |
Reset the device_async_resource_ref
for the specified device to the initial resource.
Resets to a reference to the initial cuda_memory_resource
.
device_id.value()
must be in the range [0, cudaGetDeviceCount())
, otherwise behavior is undefined.
This function is thread-safe with respect to concurrent calls to set_per_device_resource_ref
, get_per_device_resource_ref
, get_current_device_resource_ref
, set_current_device_resource_ref
and `reset_current_device_resource_ref. Concurrent calls to any of these functions will result in a valid state, but the order of execution is undefined.
device_id | The id of the target device |
device_async_resource_ref
for device_id
|
inline |
Set the memory resource for the current device.
If new_mr
is not nullptr
, sets the resource pointer for the current device to new_mr
. Otherwise, resets the resource to the initial cuda_memory_resource
.
The "current device" is the device returned by cudaGetDevice
.
The object pointed to by new_mr
must outlive the last use of the resource, otherwise behavior is undefined. It is the caller's responsibility to maintain the lifetime of the resource object.
This function is thread-safe with respect to concurrent calls to set_per_device_resource
, get_per_device_resource
, get_current_device_resource
, and set_current_device_resource
. Concurrent calls to any of these functions will result in a valid state, but the order of execution is undefined.
new_mr
must have been created for the current CUDA device. The behavior of a device_memory_resource is undefined if used while the active CUDA device is a different device from the one that was active when the device_memory_resource was created.new_mr | If not nullptr , pointer to new resource to use for the current device |
|
inline |
Set the device_async_resource_ref
for the current device.
The "current device" is the device returned by cudaGetDevice
.
The object referenced by new_resource_ref
must outlive the last use of the resource, otherwise behavior is undefined. It is the caller's responsibility to maintain the lifetime of the resource object.
This function is thread-safe with respect to concurrent calls to set_per_device_resource_ref
, get_per_device_resource_ref
, get_current_device_resource_ref
, set_current_device_resource_ref
and `reset_current_device_resource_ref. Concurrent calls to any of these functions will result in a valid state, but the order of execution is undefined.
new_resource
must have been created for the current CUDA device. The behavior of a device_async_resource_ref
is undefined if used while the active CUDA device is a different device from the one that was active when the memory resource was created.new_resource_ref | New device_async_resource_ref to use for the current device |
device_async_resource_ref
for the current device
|
inline |
Set the device_memory_resource
for the specified device.
If new_mr
is not nullptr
, sets the memory resource pointer for the device specified by id
to new_mr
. Otherwise, resets id
s resource to the initial cuda_memory_resource
.
id.value()
must be in the range [0, cudaGetDeviceCount())
, otherwise behavior is undefined.
The object pointed to by new_mr
must outlive the last use of the resource, otherwise behavior is undefined. It is the caller's responsibility to maintain the lifetime of the resource object.
This function is thread-safe with respect to concurrent calls to set_per_device_resource
, get_per_device_resource
, get_current_device_resource
, and set_current_device_resource
. Concurrent calls to any of these functions will result in a valid state, but the order of execution is undefined.
new_mr
must have been created when device id
was the current CUDA device (e.g. set using cudaSetDevice()
). The behavior of a device_memory_resource is undefined if used while the active CUDA device is a different device from the one that was active when the device_memory_resource was created.device_id | The id of the target device |
new_mr | If not nullptr , pointer to new device_memory_resource to use as new resource for id |
id
|
inline |
Set the device_async_resource_ref
for the specified device to new_resource_ref
device_id.value()
must be in the range [0, cudaGetDeviceCount())
, otherwise behavior is undefined.
The object referenced by new_resource_ref
must outlive the last use of the resource, otherwise behavior is undefined. It is the caller's responsibility to maintain the lifetime of the resource object.
This function is thread-safe with respect to concurrent calls to set_per_device_resource_ref
, get_per_device_resource_ref
, get_current_device_resource_ref
, set_current_device_resource_ref
and `reset_current_device_resource_ref. Concurrent calls to any of these functions will result in a valid state, but the order of execution is undefined.
new_resource_ref
must have been created when device device_id
was the current CUDA device (e.g. set using cudaSetDevice()
). The behavior of a device_async_resource_ref
is undefined if used while the active CUDA device is a different device from the one that was active when the memory resource was created.device_id | The id of the target device |
new_resource_ref | new device_async_resource_ref to use as new resource for device_id |
device_async_resource_ref
for device_id
device_async_resource_ref rmm::to_device_async_resource_ref_checked | ( | Resource * | res | ) |
Convert pointer to memory resource into device_async_resource_ref
, checking for nullptr
Resource | The type of the memory resource. |
res | A pointer to the memory resource. |
device_async_resource_ref
to the memory resource. std::logic_error | if the memory resource pointer is null. |