|
Mila 0.13.48
Deep Neural Network Library
|
CUDA managed memory resource for unified host/device accessible memory. More...


Public Member Functions | |
| CudaManagedMemoryResource (int device_id) | |
| Constructs CUDA managed memory resource with device ID. | |
| Public Member Functions inherited from Mila::Dnn::Compute::MemoryResource | |
| virtual | ~MemoryResource ()=default |
| Virtual destructor for proper cleanup of derived classes. | |
Static Public Attributes | |
| static constexpr DeviceType | device_type = DeviceType::Cuda |
| static constexpr bool | is_device_accessible = DeviceAccessible::is_device_accessible |
| Indicates managed memory is accessible from device code. | |
| static constexpr bool | is_host_accessible = HostAccessible::is_host_accessible |
| Indicates managed memory is accessible from host code. | |
| Static Public Attributes inherited from Mila::Dnn::Compute::MemoryResource | |
| static constexpr bool | is_device_accessible = false |
| Checks if the memory is accessible from device code. | |
| static constexpr bool | is_host_accessible = true |
| Checks if the memory is accessible from host code. | |
Protected Member Functions | |
| void * | do_allocate (std::size_t bytes, std::size_t alignment=alignof(std::max_align_t)) override |
| Allocates CUDA managed memory. | |
| void | do_deallocate (void *ptr, std::size_t, std::size_t alignment=alignof(std::max_align_t)) override |
| Deallocates CUDA managed memory. | |
| bool | do_is_equal (const std::pmr::memory_resource &other) const noexcept override |
| Compares managed memory resources for equality. | |
Private Attributes | |
| int | device_id_ {-1} |
CUDA managed memory resource for unified host/device accessible memory.
Provides CUDA managed (unified) memory allocation that is accessible from both host and device code with automatic migration. Focuses purely on memory allocation responsibilities without tensor-specific operations or type conversions.
|
inlineexplicit |
Constructs CUDA managed memory resource with device ID.
| device_id | CUDA device ID (0, 1, 2, etc.) |
| std::invalid_argument | If device_id is invalid |

|
inlineoverrideprotectedvirtual |
Allocates CUDA managed memory.
Uses cudaMallocManaged to allocate unified memory that can be accessed from both host and device code with automatic migration.
| bytes | Number of bytes to allocate |
| alignment | Memory alignment requirement (ignored by CUDA) |
| std::bad_alloc | If allocation fails |
Implements Mila::Dnn::Compute::MemoryResource.

|
inlineoverrideprotectedvirtual |
Deallocates CUDA managed memory.
Uses cudaFree to release managed memory. Ensures operation occurs on the correct device.
| ptr | Pointer to managed memory to deallocate |
| bytes | Size of memory block (unused, kept for interface compatibility) |
| alignment | Alignment used during allocation (unused, kept for interface compatibility) |
Implements Mila::Dnn::Compute::MemoryResource.

|
inlineoverrideprotectedvirtualnoexcept |
Compares managed memory resources for equality.
Managed memory resources are equal if they are both CudaManagedMemoryResource instances with the same device ID.
| other | The other memory resource to compare with |
Implements Mila::Dnn::Compute::MemoryResource.

|
private |
|
staticconstexpr |
|
staticconstexpr |
Indicates managed memory is accessible from device code.
|
staticconstexpr |
Indicates managed memory is accessible from host code.