|
Mila 0.13.48
Deep Neural Network Library
|
CUDA pinned memory resource for fast host/device transfer memory. More...


Public Member Functions | |
| CudaPinnedMemoryResource (int device_id) | |
| Constructs CUDA pinned 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 pinned memory is accessible from device code. | |
| static constexpr bool | is_host_accessible = HostAccessible::is_host_accessible |
| Indicates pinned 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 pinned memory. | |
| void | do_deallocate (void *ptr, std::size_t, std::size_t alignment=alignof(std::max_align_t)) override |
| Deallocates CUDA pinned memory. | |
| bool | do_is_equal (const std::pmr::memory_resource &other) const noexcept override |
| Compares pinned memory resources for equality. | |
Private Attributes | |
| int | device_id_ { -1 } |
CUDA pinned memory resource for fast host/device transfer memory.
Provides CUDA pinned (page-locked) memory allocation that is accessible from host code but provides faster transfers to/from GPU devices. Focuses purely on memory allocation responsibilities without tensor-specific operations.
|
inlineexplicit |
Constructs CUDA pinned 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 pinned memory.
Uses cudaMallocHost to allocate page-locked memory that provides faster transfers between host and device while remaining host-accessible.
| 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 pinned memory.
Uses cudaFreeHost to properly release page-locked memory. Ensures operation occurs on the correct device.
| ptr | Pointer to pinned 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 pinned memory resources for equality.
Pinned memory resources are equal if they are both CudaPinnedMemoryResource instances with the same device ID.
| other | The other memory resource to compare with |
Implements Mila::Dnn::Compute::MemoryResource.

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