A device memory resource that calls a callback function when allocations throw a specified exception type.
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...
|
|
Upstream * | get_upstream () const noexcept |
| Pointer to the upstream resource. More...
|
|
bool | supports_streams () const noexcept override |
| Checks whether the upstream resource supports streams. More...
|
|
bool | supports_get_mem_info () const noexcept override |
| Query whether the resource supports the get_mem_info API. More...
|
|
| 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...
|
|
std::pair< std::size_t, std::size_t > | get_mem_info (cuda_stream_view stream) const |
| Queries the amount of free and total memory for the resource. More...
|
|
template<typename Upstream, typename ExceptionType = rmm::out_of_memory>
class rmm::mr::failure_callback_resource_adaptor< Upstream, ExceptionType >
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:
using failure_callback_adaptor =
bool failure_handler(std::size_t bytes, void* arg)
{
bool& retried = *reinterpret_cast<bool*>(arg);
if (!retried) {
retried = true;
return true;
}
return false;
}
int main()
{
bool retried{false};
failure_callback_adaptor mr{
};
}
A device memory resource that calls a callback function when allocations throw a specified exception ...
Definition: failure_callback_resource_adaptor.hpp:91
device_memory_resource * set_current_device_resource(device_memory_resource *new_mr)
Set the memory resource for the current device.
Definition: per_device_resource.hpp:236
device_memory_resource * get_current_device_resource()
Get the memory resource for the current device.
Definition: per_device_resource.hpp:207
- Template Parameters
-
Upstream | The type of the upstream resource used for allocation/deallocation. |
ExceptionType | The type of exception that this adaptor should respond to |