Skip to main content

DeviceContext

Trait DeviceContext 

Source
pub trait DeviceContext:
    Downcast
    + DynClone
    + Send
    + Sync {
    // Required methods
    fn tensor_to_device(
        &self,
        tensor: TValue,
    ) -> TractResult<Box<dyn OwnedDeviceTensor>>;
    fn uninitialized_device_tensor(
        &self,
        shape: &[usize],
        dt: DatumType,
    ) -> TractResult<Box<dyn OwnedDeviceTensor>>;
    fn uninitialized_device_exotic_tensor(
        &self,
        exotic_fact: Box<dyn ExoticFact>,
    ) -> TractResult<Box<dyn OwnedDeviceTensor>>;
    fn synchronize(&self) -> TractResult<()>;
    fn copy_nd(
        &self,
        input: &DeviceTensor,
        input_offset: usize,
        input_strides: &[isize],
        output: &DeviceTensor,
        output_offset: usize,
        output_shape: &[usize],
        output_strides: &[isize],
    ) -> TractResult<()>;

    // Provided methods
    fn assign_slice(
        &self,
        dst: &DeviceTensor,
        dst_range: Range<usize>,
        src: &DeviceTensor,
        src_range: Range<usize>,
        axis: usize,
    ) -> TractResult<()> { ... }
    fn copy_with_origins(
        &self,
        zone_shape: &[usize],
        dst: &DeviceTensor,
        dst_origin: &[usize],
        dst_strides: &[isize],
        src: &DeviceTensor,
        src_origin: &[usize],
        src_strides: &[isize],
    ) -> TractResult<()> { ... }
    fn flat_copy(
        &self,
        src: &DeviceTensor,
        src_byte_offset: usize,
        dst: &DeviceTensor,
        dst_byte_offset: usize,
        byte_len: usize,
    ) -> TractResult<()> { ... }
}

Required Methods§

Source

fn tensor_to_device( &self, tensor: TValue, ) -> TractResult<Box<dyn OwnedDeviceTensor>>

Source

fn uninitialized_device_tensor( &self, shape: &[usize], dt: DatumType, ) -> TractResult<Box<dyn OwnedDeviceTensor>>

Source

fn uninitialized_device_exotic_tensor( &self, exotic_fact: Box<dyn ExoticFact>, ) -> TractResult<Box<dyn OwnedDeviceTensor>>

Source

fn synchronize(&self) -> TractResult<()>

Source

fn copy_nd( &self, input: &DeviceTensor, input_offset: usize, input_strides: &[isize], output: &DeviceTensor, output_offset: usize, output_shape: &[usize], output_strides: &[isize], ) -> TractResult<()>

Provided Methods§

Source

fn assign_slice( &self, dst: &DeviceTensor, dst_range: Range<usize>, src: &DeviceTensor, src_range: Range<usize>, axis: usize, ) -> TractResult<()>

Copy a slice along axis from src[src_range] into dst[dst_range].

Source

fn copy_with_origins( &self, zone_shape: &[usize], dst: &DeviceTensor, dst_origin: &[usize], dst_strides: &[isize], src: &DeviceTensor, src_origin: &[usize], src_strides: &[isize], ) -> TractResult<()>

Copy from src into dst with given origins and strides.

Source

fn flat_copy( &self, src: &DeviceTensor, src_byte_offset: usize, dst: &DeviceTensor, dst_byte_offset: usize, byte_len: usize, ) -> TractResult<()>

Flat memcpy of byte_len bytes.

Implementations§

Source§

impl dyn DeviceContext

Source

pub fn is<__T: DeviceContext>(&self) -> bool

Returns true if the trait object wraps an object of type __T.

Source

pub fn downcast<__T: DeviceContext>( self: Box<Self>, ) -> Result<Box<__T>, Box<Self>>

Returns a boxed object from a boxed trait object if the underlying object is of type __T. Returns the original boxed trait if it isn’t.

Source

pub fn downcast_rc<__T: DeviceContext>( self: Rc<Self>, ) -> Result<Rc<__T>, Rc<Self>>

Returns an Rc-ed object from an Rc-ed trait object if the underlying object is of type __T. Returns the original Rc-ed trait if it isn’t.

Source

pub fn downcast_ref<__T: DeviceContext>(&self) -> Option<&__T>

Returns a reference to the object within the trait object if it is of type __T, or None if it isn’t.

Source

pub fn downcast_mut<__T: DeviceContext>(&mut self) -> Option<&mut __T>

Returns a mutable reference to the object within the trait object if it is of type __T, or None if it isn’t.

Implementors§