pub struct TensorDevice<B: Backend> { /* private fields */ }Expand description
Execution context shared by both collective device interfaces.
Implementations§
Source§impl<B: Backend> TensorDevice<B>
impl<B: Backend> TensorDevice<B>
pub fn reduction_kernel<T: TensorElement>( &self, operation: ReductionOperation, ) -> Result<ReductionOperation, TensorDeviceError>
pub fn prepare<T: TensorElement>( &self, length: usize, destination_offset: usize, ) -> Result<TensorReductionLaunch, TensorDeviceError>
pub fn reduce<T: TensorElement>( &self, operation: ReductionOperation, launch: &TensorReductionLaunch, source: &TensorBuffer<B, T>, destination: &TensorBuffer<B, T>, ) -> Result<(), TensorDeviceError>
Source§impl<B: Backend> TensorDevice<B>
impl<B: Backend> TensorDevice<B>
pub fn allocate<T: TensorElement>( &self, length: usize, ) -> Result<TensorBuffer<B, T>, TensorDeviceError>
pub fn write<T: TensorElement>( &self, buffer: &TensorBuffer<B, T>, values: &[T], ) -> Result<(), TensorDeviceError>
pub fn write_at<T: TensorElement>( &self, buffer: &TensorBuffer<B, T>, offset: usize, values: &[T], ) -> Result<(), TensorDeviceError>
pub fn download<T: TensorElement>( &self, buffer: &TensorBuffer<B, T>, ) -> Result<Vec<T>, TensorDeviceError>
pub fn download_at<T: TensorElement>( &self, buffer: &TensorBuffer<B, T>, offset: usize, length: usize, ) -> Result<Vec<T>, TensorDeviceError>
Source§impl<B: Backend> TensorDevice<B>
impl<B: Backend> TensorDevice<B>
pub fn new(device: B::Device) -> Self
pub fn device(&self) -> &B::Device
Sourcepub fn import_float<T: TensorElement>(
&self,
value: B::FloatTensorPrimitive,
) -> Result<TensorBuffer<B, T>, TensorDeviceError>
pub fn import_float<T: TensorElement>( &self, value: B::FloatTensorPrimitive, ) -> Result<TensorBuffer<B, T>, TensorDeviceError>
Import a rank-one floating tensor without downloading its values.
Sourcepub fn import_int<T: TensorElement>(
&self,
value: B::IntTensorPrimitive,
) -> Result<TensorBuffer<B, T>, TensorDeviceError>
pub fn import_int<T: TensorElement>( &self, value: B::IntTensorPrimitive, ) -> Result<TensorBuffer<B, T>, TensorDeviceError>
Import a rank-one integer tensor without downloading its values.
pub fn upload<T: TensorElement>( &self, values: &[T], ) -> Result<TensorBuffer<B, T>, TensorDeviceError>
Sourcepub fn synchronize(&self) -> Result<(), TensorDeviceError>
pub fn synchronize(&self) -> Result<(), TensorDeviceError>
Wait for work already submitted to the selected tensor backend.
Trait Implementations§
Source§impl<B: Clone + Backend> Clone for TensorDevice<B>
impl<B: Clone + Backend> Clone for TensorDevice<B>
Source§fn clone(&self) -> TensorDevice<B>
fn clone(&self) -> TensorDevice<B>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<B: Backend, T: TensorElement> InProcessDevice<T> for TensorDevice<B>
impl<B: Backend, T: TensorElement> InProcessDevice<T> for TensorDevice<B>
const ELEMENT_SIZE: usize
type Context = TensorDevice<B>
type Buffer = TensorBuffer<B, T>
type Kernel = ReductionOperation
type ReductionLaunch = TensorReductionLaunch
type Error = TensorDeviceError
fn buffer_len(buffer: &Self::Buffer) -> usize
fn buffer_is_empty(buffer: &Self::Buffer) -> bool
fn alloc( context: &Self::Context, length: usize, ) -> Result<Self::Buffer, Self::Error>
fn copy_to_device( context: &Self::Context, buffer: &Self::Buffer, values: &[T], ) -> Result<(), Self::Error>
fn copy_to_device_at( context: &Self::Context, buffer: &Self::Buffer, offset: usize, values: &[T], ) -> Result<(), Self::Error>
fn copy_from_device( context: &Self::Context, buffer: &Self::Buffer, ) -> Result<Vec<T>, Self::Error>
fn copy_from_device_at( context: &Self::Context, buffer: &Self::Buffer, offset: usize, length: usize, ) -> Result<Vec<T>, Self::Error>
fn prepare_reduction( length: u32, destination_offset: u32, ) -> Self::ReductionLaunch
fn launch_reduction( context: &Self::Context, kernel: &Self::Kernel, launch: &Self::ReductionLaunch, source: &Self::Buffer, destination: &Self::Buffer, ) -> Result<(), Self::Error>
Source§impl<B: Backend, T: TensorElement> RankDevice<T> for TensorDevice<B>
impl<B: Backend, T: TensorElement> RankDevice<T> for TensorDevice<B>
const ELEMENT_SIZE: usize
type Buffer = TensorBuffer<B, T>
type Kernel = ReductionOperation
type ReductionLaunch = TensorReductionLaunch
type Error = TensorDeviceError
fn buffer_len(&self, buffer: &Self::Buffer) -> usize
fn buffer_bytes(&self, buffer: &Self::Buffer) -> usize
fn encode(values: &[T]) -> Vec<u8> ⓘ
fn decode(bytes: &[u8]) -> Result<Vec<T>, Self::Error>
fn alloc(&self, length: usize) -> Result<Self::Buffer, Self::Error>
fn copy_to_device( &self, buffer: &Self::Buffer, values: &[T], ) -> Result<(), Self::Error>
fn copy_from_device(&self, buffer: &Self::Buffer) -> Result<Vec<T>, Self::Error>
fn copy_from_device_at( &self, buffer: &Self::Buffer, element_offset: usize, length: usize, ) -> Result<Vec<T>, Self::Error>
fn copy_bytes_to_device_at( &self, buffer: &Self::Buffer, element_offset: usize, values: &[u8], ) -> Result<(), Self::Error>
fn copy_bytes_from_device_at( &self, buffer: &Self::Buffer, element_offset: usize, length: usize, ) -> Result<Vec<u8>, Self::Error>
fn prepare_reduction( &self, length: usize, destination_offset: usize, ) -> Result<Self::ReductionLaunch, Self::Error>
fn launch_reduction( &self, kernel: &Self::Kernel, launch: &Self::ReductionLaunch, source: &Self::Buffer, destination: &Self::Buffer, ) -> Result<(), Self::Error>
Auto Trait Implementations§
impl<B> Freeze for TensorDevice<B>
impl<B> RefUnwindSafe for TensorDevice<B>
impl<B> Send for TensorDevice<B>
impl<B> Sync for TensorDevice<B>
impl<B> Unpin for TensorDevice<B>
impl<B> UnsafeUnpin for TensorDevice<B>
impl<B> UnwindSafe for TensorDevice<B>
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