A device memory resource that calls a callback function when allocations throw a specified exception type. More...
#include <failure_callback_resource_adaptor.hpp>


Public Types | |
| using | exception_type = ExceptionType |
| The type of exception this object catches/throws. | |
Public Member Functions | |
| failure_callback_resource_adaptor (device_async_resource_ref upstream, failure_callback_t callback, void *callback_arg) | |
Construct a new failure_callback_resource_adaptor using upstream to satisfy allocation requests. More... | |
| failure_callback_resource_adaptor (Upstream *upstream, failure_callback_t callback, void *callback_arg) | |
Construct a new failure_callback_resource_adaptor using upstream to satisfy allocation requests. More... | |
| failure_callback_resource_adaptor (failure_callback_resource_adaptor const &)=delete | |
| failure_callback_resource_adaptor & | operator= (failure_callback_resource_adaptor const &)=delete |
| failure_callback_resource_adaptor (failure_callback_resource_adaptor &&) noexcept=default | |
| Default move constructor. | |
| failure_callback_resource_adaptor & | operator= (failure_callback_resource_adaptor &&) noexcept=default |
| Default move assignment operator. More... | |
| rmm::device_async_resource_ref | get_upstream_resource () const noexcept |
| rmm::device_async_resource_ref to the upstream resource More... | |
Public Member Functions inherited from rmm::mr::device_memory_resource | |
| device_memory_resource (device_memory_resource const &)=default | |
| Default copy constructor. | |
| device_memory_resource (device_memory_resource &&) noexcept=default | |
| Default move constructor. | |
| device_memory_resource & | operator= (device_memory_resource const &)=default |
| Default copy assignment operator. More... | |
| device_memory_resource & | operator= (device_memory_resource &&) noexcept=default |
| Default move assignment operator. More... | |
| void * | allocate (std::size_t bytes, cuda_stream_view stream=cuda_stream_view{}) |
Allocates memory of size at least bytes. More... | |
| void | deallocate (void *ptr, std::size_t bytes, cuda_stream_view stream=cuda_stream_view{}) |
Deallocate memory pointed to by p. More... | |
| bool | is_equal (device_memory_resource const &other) const noexcept |
| Compare this resource to another. More... | |
| void * | allocate (std::size_t bytes, std::size_t alignment) |
Allocates memory of size at least bytes. More... | |
| void | deallocate (void *ptr, std::size_t bytes, std::size_t alignment) |
Deallocate memory pointed to by p. More... | |
| void * | allocate_async (std::size_t bytes, std::size_t alignment, cuda_stream_view stream) |
Allocates memory of size at least bytes. More... | |
| void * | allocate_async (std::size_t bytes, cuda_stream_view stream) |
Allocates memory of size at least bytes. More... | |
| void | deallocate_async (void *ptr, std::size_t bytes, std::size_t alignment, cuda_stream_view stream) |
Deallocate memory pointed to by p. More... | |
| void | deallocate_async (void *ptr, std::size_t bytes, cuda_stream_view stream) |
Deallocate memory pointed to by p. More... | |
| bool | operator== (device_memory_resource const &other) const noexcept |
| Comparison operator with another device_memory_resource. More... | |
| bool | operator!= (device_memory_resource const &other) const noexcept |
| Comparison operator with another device_memory_resource. More... | |
A device memory resource that calls a callback function when allocations throw a specified exception type.
An instance of this resource must be constructed with an existing, upstream resource in order to satisfy allocation requests.
The callback function takes an allocation size and a callback argument and returns a bool representing whether to retry the allocation (true) or re-throw the caught exception (false).
When implementing a callback function for allocation retry, care must be taken to avoid an infinite loop. The following example makes sure to only retry the allocation once:
| Upstream | The type of the upstream resource used for allocation/deallocation. |
| ExceptionType | The type of exception that this adaptor should respond to |
|
inline |
Construct a new failure_callback_resource_adaptor using upstream to satisfy allocation requests.
| upstream | The resource used for allocating/deallocating device memory |
| callback | Callback function |
| callback_arg | Extra argument passed to callback |
|
inline |
Construct a new failure_callback_resource_adaptor using upstream to satisfy allocation requests.
| rmm::logic_error | if upstream == nullptr |
| upstream | The resource used for allocating/deallocating device memory |
| callback | Callback function |
| callback_arg | Extra argument passed to callback |
|
inlinenoexcept |
rmm::device_async_resource_ref to the upstream resource
|
defaultnoexcept |
Default move assignment operator.