Skip to main content

NativeMemoryPool

Struct NativeMemoryPool 

Source
pub struct NativeMemoryPool { /* private fields */ }
Expand description

Thin wrapper around the CUDA driver’s stream-ordered memory pool (cuMemPoolCreate / cuMemPoolDestroy).

Allocations are issued via NativeMemoryPool::alloc_async which invokes cuMemAllocFromPoolAsync; frees are issued via NativeMemoryPool::free_async which invokes cuMemFreeAsync.

§Stream-ordering

The CUDA stream-ordered pool API requires the caller to ensure all outstanding work on the stream has completed before destroying the pool. The Drop implementation calls cuMemPoolDestroy and silently swallows any error to honour the standard Drop convention. Call NativeMemoryPool::destroy explicitly to surface destruction errors.

§Status

On systems without a CUDA driver (e.g. macOS), NativeMemoryPool::new fails with CudaError::NotInitialized. On older drivers that lack the pool entry points it fails with CudaError::NotSupported.

Implementations§

Source§

impl NativeMemoryPool

Source

pub fn new(props: NativeMemoryPoolProps) -> CudaResult<Self>

Creates a new native memory pool on the device described by props.

§Errors
Source

pub fn raw(&self) -> CUmemoryPool

Returns the raw CUmemoryPool handle.

Source

pub fn device_ordinal(&self) -> i32

Returns the device ordinal that backs this pool.

Source

pub fn alloc_async( &self, bytes: usize, stream: &Stream, ) -> CudaResult<CUdeviceptr>

Asynchronously allocates bytes of memory from the pool, ordered against stream.

§Errors
Source

pub fn free_async(&self, ptr: CUdeviceptr, stream: &Stream) -> CudaResult<()>

Asynchronously frees a pointer previously returned by alloc_async, ordered against stream.

§Errors
Source

pub fn destroy(self) -> CudaResult<()>

Destroys the pool, returning any driver error to the caller.

The caller is responsible for ensuring all outstanding work on streams that allocated from this pool has completed before calling destroy.

After this call returns, the Drop implementation will be a no-op.

§Errors

Trait Implementations§

Source§

impl Drop for NativeMemoryPool

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Send for NativeMemoryPool

Source§

impl Sync for NativeMemoryPool

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more