pub trait TensorMeta<D: Device, K: DTypeKind<D> + Sized>:
Default
+ Send
+ Sync {
Show 22 methods
// Required methods
fn on_binary(lhs: &Tensor<D, K>, rhs: &Tensor<D, K>, op: BinaryOp) -> Self;
fn on_binary_scalar(
lhs: &Tensor<D, K>,
rhs: K::Scalar,
op: BinaryOp,
) -> Self;
fn on_unary(t: &Tensor<D, K>, op: UnaryOp<K::Scalar>) -> Self;
fn on_float_unary(t: &Tensor<D, K>, op: FloatUnaryOp) -> Self;
fn on_reduce(t: &Tensor<D, K>, dims: &[usize], op: ReduceOp) -> Self;
fn on_matmul(lhs: &Tensor<D, K>, rhs: &Tensor<D, K>) -> Self;
fn on_broadcast(t: &Tensor<D, K>) -> Self;
fn on_narrow(t: &Tensor<D, K>, dim: usize, start: usize, len: usize) -> Self;
fn on_slice(
t: &Tensor<D, K>,
dim: usize,
start: usize,
end: usize,
step: usize,
) -> Self;
fn on_reshape(t: &Tensor<D, K>) -> Self;
fn on_transpose(t: &Tensor<D, K>, dim1: usize, dim2: usize) -> Self;
fn on_permute(t: &Tensor<D, K>, dims: Vec<usize>) -> Self;
fn on_cat<A: AsRef<Tensor<D, K>>>(args: &[A], dim: usize) -> Self;
fn on_copy(t: &Tensor<D, K>) -> Self;
fn on_cast(t: &Tensor<D, K>) -> Self;
fn on_index_select(
t: &Tensor<D, K>,
idx: &Tensor<D, Int>,
dim: usize,
) -> Self;
fn on_gather(src: &Tensor<D, K>, idx: &Tensor<D, Int>, dim: usize) -> Self;
fn on_index_add(
init: &Tensor<D, K>,
idx: &Tensor<D, Int>,
src: &Tensor<D, K>,
dim: usize,
) -> Self;
fn on_scatter_add(
init: &Tensor<D, K>,
idx: &Tensor<D, Int>,
src: &Tensor<D, K>,
dim: usize,
) -> Self;
fn on_pick(
mask: &Tensor<D, Bool>,
tv: Option<&Tensor<D, K>>,
fv: Option<&Tensor<D, K>>,
) -> Self;
fn on_rms_norm(
input: &Tensor<D, K>,
weight: &Tensor<D, K>,
eps: f64,
) -> Self;
fn on_softmax(input: &Tensor<D, K>, dim: usize) -> Self;
}Expand description
Trait for metadata that knows how to construct itself when a tensor operation is performed.
Required Methods§
fn on_binary(lhs: &Tensor<D, K>, rhs: &Tensor<D, K>, op: BinaryOp) -> Self
fn on_binary_scalar(lhs: &Tensor<D, K>, rhs: K::Scalar, op: BinaryOp) -> Self
fn on_unary(t: &Tensor<D, K>, op: UnaryOp<K::Scalar>) -> Self
fn on_float_unary(t: &Tensor<D, K>, op: FloatUnaryOp) -> Self
fn on_reduce(t: &Tensor<D, K>, dims: &[usize], op: ReduceOp) -> Self
fn on_matmul(lhs: &Tensor<D, K>, rhs: &Tensor<D, K>) -> Self
fn on_broadcast(t: &Tensor<D, K>) -> Self
fn on_narrow(t: &Tensor<D, K>, dim: usize, start: usize, len: usize) -> Self
fn on_slice( t: &Tensor<D, K>, dim: usize, start: usize, end: usize, step: usize, ) -> Self
fn on_reshape(t: &Tensor<D, K>) -> Self
fn on_transpose(t: &Tensor<D, K>, dim1: usize, dim2: usize) -> Self
fn on_permute(t: &Tensor<D, K>, dims: Vec<usize>) -> Self
fn on_cat<A: AsRef<Tensor<D, K>>>(args: &[A], dim: usize) -> Self
fn on_copy(t: &Tensor<D, K>) -> Self
fn on_cast(t: &Tensor<D, K>) -> Self
fn on_index_select(t: &Tensor<D, K>, idx: &Tensor<D, Int>, dim: usize) -> Self
fn on_gather(src: &Tensor<D, K>, idx: &Tensor<D, Int>, dim: usize) -> Self
fn on_index_add( init: &Tensor<D, K>, idx: &Tensor<D, Int>, src: &Tensor<D, K>, dim: usize, ) -> Self
fn on_scatter_add( init: &Tensor<D, K>, idx: &Tensor<D, Int>, src: &Tensor<D, K>, dim: usize, ) -> Self
fn on_pick( mask: &Tensor<D, Bool>, tv: Option<&Tensor<D, K>>, fv: Option<&Tensor<D, K>>, ) -> Self
fn on_rms_norm(input: &Tensor<D, K>, weight: &Tensor<D, K>, eps: f64) -> Self
fn on_softmax(input: &Tensor<D, K>, dim: usize) -> Self
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".