pub struct MemoryPinningManager { /* private fields */ }Expand description
Memory pinning manager that selects appropriate pinner based on device
This manager provides a unified interface for memory pinning across different device types, automatically selecting the appropriate pinner implementation based on the target device.
§Examples
ⓘ
use torsh_data::dataloader::memory::MemoryPinningManager;
use torsh_core::device::DeviceType;
let mut manager = MemoryPinningManager::new();
// Check if pinning is supported for CUDA
let cuda_supported = manager.supports_pinning(Some(DeviceType::Cuda(0)));Implementations§
Source§impl MemoryPinningManager
impl MemoryPinningManager
Sourcepub fn pin_memory<T>(
&mut self,
data: Tensor<T>,
target_device: Option<DeviceType>,
) -> Result<Tensor<T>>where
T: TensorElement,
pub fn pin_memory<T>(
&mut self,
data: Tensor<T>,
target_device: Option<DeviceType>,
) -> Result<Tensor<T>>where
T: TensorElement,
Pin memory for the appropriate device
This method automatically selects the appropriate pinning implementation based on the target device type.
§Arguments
data- The tensor data to pintarget_device- The target device for the data
§Returns
The tensor with memory pinning applied if supported
§Examples
ⓘ
use torsh_data::dataloader::memory::MemoryPinningManager;
use torsh_core::device::DeviceType;
use torsh_tensor::Tensor;
let mut manager = MemoryPinningManager::new();
let tensor = Tensor::zeros(&[2, 3]);
let pinned = manager.pin_memory(tensor, Some(DeviceType::Cpu))?;Sourcepub fn pin_vector_memory<T>(
&mut self,
data: Vec<T>,
target_device: Option<DeviceType>,
) -> Result<Vec<T>>
pub fn pin_vector_memory<T>( &mut self, data: Vec<T>, target_device: Option<DeviceType>, ) -> Result<Vec<T>>
Sourcepub fn supports_pinning(&self, target_device: Option<DeviceType>) -> bool
pub fn supports_pinning(&self, target_device: Option<DeviceType>) -> bool
Sourcepub fn available_pinners(&self) -> String
pub fn available_pinners(&self) -> String
Get information about available pinning implementations
§Returns
String describing available pinning capabilities
Trait Implementations§
Source§impl Debug for MemoryPinningManager
impl Debug for MemoryPinningManager
Auto Trait Implementations§
impl Freeze for MemoryPinningManager
impl RefUnwindSafe for MemoryPinningManager
impl Send for MemoryPinningManager
impl Sync for MemoryPinningManager
impl Unpin for MemoryPinningManager
impl UnsafeUnpin for MemoryPinningManager
impl UnwindSafe for MemoryPinningManager
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.