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§
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§
Sourcefn assign_slice(
&self,
dst: &DeviceTensor,
dst_range: Range<usize>,
src: &DeviceTensor,
src_range: Range<usize>,
axis: usize,
) -> TractResult<()>
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].
Sourcefn 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 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.
Sourcefn flat_copy(
&self,
src: &DeviceTensor,
src_byte_offset: usize,
dst: &DeviceTensor,
dst_byte_offset: usize,
byte_len: usize,
) -> TractResult<()>
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
impl dyn DeviceContext
Sourcepub fn is<__T: DeviceContext>(&self) -> bool
pub fn is<__T: DeviceContext>(&self) -> bool
Returns true if the trait object wraps an object of type __T.
Sourcepub fn downcast<__T: DeviceContext>(
self: Box<Self>,
) -> Result<Box<__T>, Box<Self>>
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.
Sourcepub fn downcast_rc<__T: DeviceContext>(
self: Rc<Self>,
) -> Result<Rc<__T>, Rc<Self>>
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.
Sourcepub fn downcast_ref<__T: DeviceContext>(&self) -> Option<&__T>
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.
Sourcepub fn downcast_mut<__T: DeviceContext>(&mut self) -> Option<&mut __T>
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.