Skip to main content

NDArrayPool

Struct NDArrayPool 

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

NDArray factory with free-list reuse and memory tracking.

Mimics C++ ADCore’s NDArrayPool: on alloc, checks the free list for a buffer with sufficient capacity. On release, returns the buffer to the free list for future reuse. The free list is sorted by capacity (descending) and excess entries are dropped when max_memory is exceeded.

Implementations§

Source§

impl NDArrayPool

Source

pub fn new(max_memory: usize) -> Self

Source

pub fn alloc( &self, dims: Vec<NDDimension>, data_type: NDDataType, ) -> ADResult<NDArray>

Allocate an NDArray. Tries to reuse a free-list entry with sufficient capacity.

Source

pub fn alloc_copy(&self, source: &NDArray) -> ADResult<NDArray>

Allocate a copy of an existing NDArray (new unique_id, data cloned).

Source

pub fn release(&self, array: NDArray)

Return an array to the free list for future reuse.

Source

pub fn empty_free_list(&self)

Clear all entries from the free list.

Source

pub fn allocated_bytes(&self) -> u64

Source

pub fn num_alloc_buffers(&self) -> u32

Source

pub fn num_free_buffers(&self) -> u32

Source

pub fn max_memory(&self) -> usize

Source

pub fn alloc_handle( pool: &Arc<Self>, dims: Vec<NDDimension>, data_type: NDDataType, ) -> ADResult<NDArrayHandle>

Allocate an NDArray wrapped in a pool-aware handle. On final drop, the array is returned to this pool’s free list.

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