Trait QTensorOps
pub trait QTensorOps<B>where
B: Backend,{
Show 74 methods
// Required methods
fn q_from_data(
data: TensorData,
device: &<B as Backend>::Device,
) -> <B as Backend>::QuantizedTensorPrimitive;
fn quantize(
tensor: <B as Backend>::FloatTensorPrimitive,
scheme: &QuantScheme,
qparams: QuantizationParametersPrimitive<B>,
) -> <B as Backend>::QuantizedTensorPrimitive;
fn dequantize(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::FloatTensorPrimitive;
fn q_device(
tensor: &<B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::Device;
fn q_to_device(
tensor: <B as Backend>::QuantizedTensorPrimitive,
device: &<B as Backend>::Device,
) -> <B as Backend>::QuantizedTensorPrimitive;
fn q_reshape(
tensor: <B as Backend>::QuantizedTensorPrimitive,
shape: Shape,
) -> <B as Backend>::QuantizedTensorPrimitive;
fn q_into_data(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> impl Future<Output = TensorData> + Send;
fn q_expand(
tensor: <B as Backend>::QuantizedTensorPrimitive,
shape: Shape,
) -> <B as Backend>::QuantizedTensorPrimitive;
fn q_swap_dims(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim1: usize,
dim2: usize,
) -> <B as Backend>::QuantizedTensorPrimitive;
fn q_permute(
tensor: <B as Backend>::QuantizedTensorPrimitive,
axes: &[usize],
) -> <B as Backend>::QuantizedTensorPrimitive;
fn q_flip(
tensor: <B as Backend>::QuantizedTensorPrimitive,
axes: &[usize],
) -> <B as Backend>::QuantizedTensorPrimitive;
fn q_select(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
indices: <B as Backend>::IntTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive;
fn q_slice(
tensor: <B as Backend>::QuantizedTensorPrimitive,
ranges: &[Range<usize>],
) -> <B as Backend>::QuantizedTensorPrimitive;
// Provided methods
fn quantize_dynamic(
tensor: <B as Backend>::FloatTensorPrimitive,
scheme: &QuantScheme,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_detach(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_set_require_grad(
tensor: <B as Backend>::QuantizedTensorPrimitive,
_require_grad: bool,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_is_require_grad(
_tensor: &<B as Backend>::QuantizedTensorPrimitive,
) -> bool { ... }
fn q_transpose(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_gather(
dim: usize,
tensor: <B as Backend>::QuantizedTensorPrimitive,
indices: <B as Backend>::IntTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_repeat_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
times: usize,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_add(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_add_scalar(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::FloatElem,
) -> TensorPrimitive<B> { ... }
fn q_clamp_min(
tensor: <B as Backend>::QuantizedTensorPrimitive,
min: <B as Backend>::FloatElem,
) -> TensorPrimitive<B> { ... }
fn q_clamp_max(
tensor: <B as Backend>::QuantizedTensorPrimitive,
max: <B as Backend>::FloatElem,
) -> TensorPrimitive<B> { ... }
fn q_clamp(
tensor: <B as Backend>::QuantizedTensorPrimitive,
min: <B as Backend>::FloatElem,
max: <B as Backend>::FloatElem,
) -> TensorPrimitive<B> { ... }
fn q_sub(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_sub_scalar(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::FloatElem,
) -> TensorPrimitive<B> { ... }
fn q_mul(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_mul_scalar(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::FloatElem,
) -> TensorPrimitive<B> { ... }
fn q_div(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_div_scalar(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::FloatElem,
) -> TensorPrimitive<B> { ... }
fn q_matmul(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_neg(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_recip(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_sum(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_sum_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> TensorPrimitive<B> { ... }
fn q_prod(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_prod_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> TensorPrimitive<B> { ... }
fn q_mean(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_mean_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> TensorPrimitive<B> { ... }
fn q_exp(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_log(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_log1p(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_powf(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_powi(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::IntTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_powi_scalar(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::IntElem,
) -> TensorPrimitive<B> { ... }
fn q_powf_scalar(
tensor: <B as Backend>::QuantizedTensorPrimitive,
value: f32,
) -> TensorPrimitive<B> { ... }
fn q_sqrt(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_abs(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_cos(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_sin(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_tan(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_cosh(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_sinh(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_tanh(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_erf(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B> { ... }
fn q_cat(
tensors: Vec<<B as Backend>::QuantizedTensorPrimitive>,
dim: usize,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_argmax(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::IntTensorPrimitive { ... }
fn q_argmin(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::IntTensorPrimitive { ... }
fn q_max(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_max_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_max_dim_with_indices(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> (<B as Backend>::QuantizedTensorPrimitive, <B as Backend>::IntTensorPrimitive) { ... }
fn q_min(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_min_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_min_dim_with_indices(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> (<B as Backend>::QuantizedTensorPrimitive, <B as Backend>::IntTensorPrimitive) { ... }
fn q_max_abs(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_max_abs_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_any(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::BoolTensorPrimitive { ... }
fn q_any_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::BoolTensorPrimitive { ... }
fn q_all(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::BoolTensorPrimitive { ... }
fn q_all_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::BoolTensorPrimitive { ... }
fn q_sort(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
descending: bool,
) -> <B as Backend>::QuantizedTensorPrimitive { ... }
fn q_sort_with_indices(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
descending: bool,
) -> (<B as Backend>::QuantizedTensorPrimitive, <B as Backend>::IntTensorPrimitive) { ... }
fn q_argsort(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
descending: bool,
) -> <B as Backend>::IntTensorPrimitive { ... }
}
Expand description
Operations on quantized tensors.
§Return Type Semantics
The return type of each operation indicates how quantization is handled:
§QuantizedTensor<B>
If the method returns a QuantizedTensor<B>
, the operation is expected to
preserve the quantized
representation. Implementations should avoid dequantizing when possible to maintain
performance.
For example, shape or layout changes such as expand or transpose preserve quantization.
Note: while this currently doesn’t affect the quantized tensor parameters (only per-tensor is supported at the time of writing), other quantization levels (e.g., per-block) may require re-ordering the quantization parameters to match the new layout.
§TensorPrimitive<B>
If the method returns a TensorPrimitive<B>
enum, the return type should
align with propagation
strategy specified in the quantization scheme. The output should remain quantized (TensorPrimitive::QFloat
)
returned in floating-point form (TensorPrimitive::Float
).
This distinction allows for fine-grained control over mixed-precision flows while still operating through a unified API.
Required Methods§
fn q_from_data(
data: TensorData,
device: &<B as Backend>::Device,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_from_data( data: TensorData, device: &<B as Backend>::Device, ) -> <B as Backend>::QuantizedTensorPrimitive
fn quantize(
tensor: <B as Backend>::FloatTensorPrimitive,
scheme: &QuantScheme,
qparams: QuantizationParametersPrimitive<B>,
) -> <B as Backend>::QuantizedTensorPrimitive
fn quantize( tensor: <B as Backend>::FloatTensorPrimitive, scheme: &QuantScheme, qparams: QuantizationParametersPrimitive<B>, ) -> <B as Backend>::QuantizedTensorPrimitive
Convert the tensor to a lower precision data type based on the quantization scheme and parameters.
fn dequantize(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::FloatTensorPrimitive
fn dequantize( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> <B as Backend>::FloatTensorPrimitive
Convert the tensor back to a higher precision data type.
fn q_device(
tensor: &<B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::Device
fn q_device( tensor: &<B as Backend>::QuantizedTensorPrimitive, ) -> <B as Backend>::Device
fn q_to_device(
tensor: <B as Backend>::QuantizedTensorPrimitive,
device: &<B as Backend>::Device,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_to_device( tensor: <B as Backend>::QuantizedTensorPrimitive, device: &<B as Backend>::Device, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_reshape(
tensor: <B as Backend>::QuantizedTensorPrimitive,
shape: Shape,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_reshape( tensor: <B as Backend>::QuantizedTensorPrimitive, shape: Shape, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_into_data(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> impl Future<Output = TensorData> + Send
fn q_into_data( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> impl Future<Output = TensorData> + Send
fn q_expand(
tensor: <B as Backend>::QuantizedTensorPrimitive,
shape: Shape,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_expand( tensor: <B as Backend>::QuantizedTensorPrimitive, shape: Shape, ) -> <B as Backend>::QuantizedTensorPrimitive
Broadcasts the tensor
to the given shape
.
fn q_swap_dims(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim1: usize,
dim2: usize,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_swap_dims( tensor: <B as Backend>::QuantizedTensorPrimitive, dim1: usize, dim2: usize, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_permute(
tensor: <B as Backend>::QuantizedTensorPrimitive,
axes: &[usize],
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_permute( tensor: <B as Backend>::QuantizedTensorPrimitive, axes: &[usize], ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_flip(
tensor: <B as Backend>::QuantizedTensorPrimitive,
axes: &[usize],
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_flip( tensor: <B as Backend>::QuantizedTensorPrimitive, axes: &[usize], ) -> <B as Backend>::QuantizedTensorPrimitive
Reverse the order of elements in a tensor along the given axes.
§Arguments
tensor
- The tensor to reverse.axes
- The axes to reverse.
The tensor with the elements reversed.
fn q_select(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
indices: <B as Backend>::IntTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_select( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, indices: <B as Backend>::IntTensorPrimitive, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_slice(
tensor: <B as Backend>::QuantizedTensorPrimitive,
ranges: &[Range<usize>],
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_slice( tensor: <B as Backend>::QuantizedTensorPrimitive, ranges: &[Range<usize>], ) -> <B as Backend>::QuantizedTensorPrimitive
Provided Methods§
fn quantize_dynamic(
tensor: <B as Backend>::FloatTensorPrimitive,
scheme: &QuantScheme,
) -> <B as Backend>::QuantizedTensorPrimitive
fn quantize_dynamic( tensor: <B as Backend>::FloatTensorPrimitive, scheme: &QuantScheme, ) -> <B as Backend>::QuantizedTensorPrimitive
Dynamically convert the tensor to a lower precision data type based on the quantization scheme.
fn q_detach(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_detach( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> <B as Backend>::QuantizedTensorPrimitive
Detaches a tensor from the computation graph.
fn q_set_require_grad(
tensor: <B as Backend>::QuantizedTensorPrimitive,
_require_grad: bool,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_set_require_grad( tensor: <B as Backend>::QuantizedTensorPrimitive, _require_grad: bool, ) -> <B as Backend>::QuantizedTensorPrimitive
Sets the require_grad
flag of a tensor.
fn q_is_require_grad(_tensor: &<B as Backend>::QuantizedTensorPrimitive)
-> bool
fn q_is_require_grad(_tensor: &<B as Backend>::QuantizedTensorPrimitive) -> bool
Returns the require_grad
flag of a tensor.
fn q_transpose(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_transpose( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_gather(
dim: usize,
tensor: <B as Backend>::QuantizedTensorPrimitive,
indices: <B as Backend>::IntTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_gather( dim: usize, tensor: <B as Backend>::QuantizedTensorPrimitive, indices: <B as Backend>::IntTensorPrimitive, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_repeat_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
times: usize,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_repeat_dim( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, times: usize, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_add(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_add( lhs: <B as Backend>::QuantizedTensorPrimitive, rhs: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
fn q_add_scalar(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::FloatElem,
) -> TensorPrimitive<B>
fn q_add_scalar( lhs: <B as Backend>::QuantizedTensorPrimitive, rhs: <B as Backend>::FloatElem, ) -> TensorPrimitive<B>
fn q_clamp_min(
tensor: <B as Backend>::QuantizedTensorPrimitive,
min: <B as Backend>::FloatElem,
) -> TensorPrimitive<B>
fn q_clamp_min( tensor: <B as Backend>::QuantizedTensorPrimitive, min: <B as Backend>::FloatElem, ) -> TensorPrimitive<B>
fn q_clamp_max(
tensor: <B as Backend>::QuantizedTensorPrimitive,
max: <B as Backend>::FloatElem,
) -> TensorPrimitive<B>
fn q_clamp_max( tensor: <B as Backend>::QuantizedTensorPrimitive, max: <B as Backend>::FloatElem, ) -> TensorPrimitive<B>
fn q_clamp(
tensor: <B as Backend>::QuantizedTensorPrimitive,
min: <B as Backend>::FloatElem,
max: <B as Backend>::FloatElem,
) -> TensorPrimitive<B>
fn q_clamp( tensor: <B as Backend>::QuantizedTensorPrimitive, min: <B as Backend>::FloatElem, max: <B as Backend>::FloatElem, ) -> TensorPrimitive<B>
fn q_sub(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_sub( lhs: <B as Backend>::QuantizedTensorPrimitive, rhs: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
fn q_sub_scalar(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::FloatElem,
) -> TensorPrimitive<B>
fn q_sub_scalar( lhs: <B as Backend>::QuantizedTensorPrimitive, rhs: <B as Backend>::FloatElem, ) -> TensorPrimitive<B>
fn q_mul(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_mul( lhs: <B as Backend>::QuantizedTensorPrimitive, rhs: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
Multiplies two tensors together element-wise.
fn q_mul_scalar(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::FloatElem,
) -> TensorPrimitive<B>
fn q_mul_scalar( lhs: <B as Backend>::QuantizedTensorPrimitive, rhs: <B as Backend>::FloatElem, ) -> TensorPrimitive<B>
fn q_div(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_div( lhs: <B as Backend>::QuantizedTensorPrimitive, rhs: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
fn q_div_scalar(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::FloatElem,
) -> TensorPrimitive<B>
fn q_div_scalar( lhs: <B as Backend>::QuantizedTensorPrimitive, rhs: <B as Backend>::FloatElem, ) -> TensorPrimitive<B>
fn q_matmul(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_matmul( lhs: <B as Backend>::QuantizedTensorPrimitive, rhs: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
fn q_neg(tensor: <B as
Backend>::QuantizedTensorPrimitive)
-> TensorPrimitive<B>
fn q_neg(tensor: <B as Backend>::QuantizedTensorPrimitive) -> TensorPrimitive<B>
Negates a tensor element-wise.
fn q_recip(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_recip( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
Calculates the reciprocals element-wise
fn q_sum(tensor: <B as
Backend>::QuantizedTensorPrimitive)
-> TensorPrimitive<B>
fn q_sum(tensor: <B as Backend>::QuantizedTensorPrimitive) -> TensorPrimitive<B>
fn q_sum_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> TensorPrimitive<B>
fn q_sum_dim( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, ) -> TensorPrimitive<B>
fn q_prod(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_prod( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
fn q_prod_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> TensorPrimitive<B>
fn q_prod_dim( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, ) -> TensorPrimitive<B>
fn q_mean(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_mean( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
fn q_mean_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> TensorPrimitive<B>
fn q_mean_dim( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, ) -> TensorPrimitive<B>
fn q_exp(tensor: <B as
Backend>::QuantizedTensorPrimitive)
-> TensorPrimitive<B>
fn q_exp(tensor: <B as Backend>::QuantizedTensorPrimitive) -> TensorPrimitive<B>
fn q_log(tensor: <B as
Backend>::QuantizedTensorPrimitive)
-> TensorPrimitive<B>
fn q_log(tensor: <B as Backend>::QuantizedTensorPrimitive) -> TensorPrimitive<B>
fn q_log1p(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_log1p( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
fn q_powf(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_powf( lhs: <B as Backend>::QuantizedTensorPrimitive, rhs: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
fn q_powi(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::IntTensorPrimitive,
) -> TensorPrimitive<B>
fn q_powi( lhs: <B as Backend>::QuantizedTensorPrimitive, rhs: <B as Backend>::IntTensorPrimitive, ) -> TensorPrimitive<B>
fn q_powi_scalar(
lhs: <B as Backend>::QuantizedTensorPrimitive,
rhs: <B as Backend>::IntElem,
) -> TensorPrimitive<B>
fn q_powi_scalar( lhs: <B as Backend>::QuantizedTensorPrimitive, rhs: <B as Backend>::IntElem, ) -> TensorPrimitive<B>
fn q_powf_scalar(
tensor: <B as Backend>::QuantizedTensorPrimitive,
value: f32,
) -> TensorPrimitive<B>
fn q_powf_scalar( tensor: <B as Backend>::QuantizedTensorPrimitive, value: f32, ) -> TensorPrimitive<B>
fn q_sqrt(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_sqrt( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
fn q_abs(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_abs( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_cos(tensor: <B as
Backend>::QuantizedTensorPrimitive)
-> TensorPrimitive<B>
fn q_cos(tensor: <B as Backend>::QuantizedTensorPrimitive) -> TensorPrimitive<B>
fn q_sin(tensor: <B as
Backend>::QuantizedTensorPrimitive)
-> TensorPrimitive<B>
fn q_sin(tensor: <B as Backend>::QuantizedTensorPrimitive) -> TensorPrimitive<B>
fn q_tan(tensor: <B as
Backend>::QuantizedTensorPrimitive)
-> TensorPrimitive<B>
fn q_tan(tensor: <B as Backend>::QuantizedTensorPrimitive) -> TensorPrimitive<B>
fn q_cosh(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_cosh( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
fn q_sinh(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_sinh( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
fn q_tanh(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> TensorPrimitive<B>
fn q_tanh( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> TensorPrimitive<B>
fn q_erf(tensor: <B as
Backend>::QuantizedTensorPrimitive)
-> TensorPrimitive<B>
fn q_erf(tensor: <B as Backend>::QuantizedTensorPrimitive) -> TensorPrimitive<B>
fn q_cat(
tensors: Vec<<B as Backend>::QuantizedTensorPrimitive>,
dim: usize,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_cat( tensors: Vec<<B as Backend>::QuantizedTensorPrimitive>, dim: usize, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_argmax(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::IntTensorPrimitive
fn q_argmax( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, ) -> <B as Backend>::IntTensorPrimitive
fn q_argmin(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::IntTensorPrimitive
fn q_argmin( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, ) -> <B as Backend>::IntTensorPrimitive
fn q_max(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_max( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_max_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_max_dim( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_max_dim_with_indices(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> (<B as Backend>::QuantizedTensorPrimitive,
<B as Backend>::IntTensorPrimitive)
fn q_max_dim_with_indices( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, ) -> (<B as Backend>::QuantizedTensorPrimitive, <B as Backend>::IntTensorPrimitive)
fn q_min(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_min( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_min_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_min_dim( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_min_dim_with_indices(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> (<B as Backend>::QuantizedTensorPrimitive,
<B as Backend>::IntTensorPrimitive)
fn q_min_dim_with_indices( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, ) -> (<B as Backend>::QuantizedTensorPrimitive, <B as Backend>::IntTensorPrimitive)
fn q_max_abs(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_max_abs( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_max_abs_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_max_abs_dim( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, ) -> <B as Backend>::QuantizedTensorPrimitive
fn q_any(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::BoolTensorPrimitive
fn q_any( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> <B as Backend>::BoolTensorPrimitive
fn q_any_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::BoolTensorPrimitive
fn q_any_dim( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, ) -> <B as Backend>::BoolTensorPrimitive
Tests if any element in the float tensor
evaluates to True along a given
dimension dim
.
§Arguments
tensor
- The tensor to test.dim
- The axis along which to test.
§Returns
A boolean tensor Tensor<B, D, Bool>
with the same size as input
tensor
, except in the dim
axis
where the size is 1. The elem in the dim
axis is True if any element along
this dim in the
input evaluates to True, False otherwise.
fn q_all(
tensor: <B as Backend>::QuantizedTensorPrimitive,
) -> <B as Backend>::BoolTensorPrimitive
fn q_all( tensor: <B as Backend>::QuantizedTensorPrimitive, ) -> <B as Backend>::BoolTensorPrimitive
fn q_all_dim(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
) -> <B as Backend>::BoolTensorPrimitive
fn q_all_dim( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, ) -> <B as Backend>::BoolTensorPrimitive
Tests if all elements in the tensor
evaluate to True along a given dimension
dim
.
§Arguments
tensor
- The tensor to test.dim
- The axis along which to test.
§Returns
A boolean tensor Tensor<B, D, Bool>
with the same size as input
tensor
, except in the dim
axis
where the size is 1. The elem in the dim
axis is True if all elements along
this dim in the input
evaluates to True, False otherwise.
fn q_sort(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
descending: bool,
) -> <B as Backend>::QuantizedTensorPrimitive
fn q_sort( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, descending: bool, ) -> <B as Backend>::QuantizedTensorPrimitive
Sort the elements of the input tensor
by value in along a given dimension.
This sort is unstable (i.e., may reorder equal elements).
§Arguments
tensor
- The input tensor.dim
- The axis along which to sort.descending
- The sorting order.
§Returns
A tensor with the same shape as the input tensor, where the elements are sorted by value.
fn q_sort_with_indices(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
descending: bool,
) -> (<B as Backend>::QuantizedTensorPrimitive,
<B as Backend>::IntTensorPrimitive)
fn q_sort_with_indices( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, descending: bool, ) -> (<B as Backend>::QuantizedTensorPrimitive, <B as Backend>::IntTensorPrimitive)
Sort the elements of the input tensor
by value in along a given dimension.
This sort is unstable (i.e., may reorder equal elements).
§Arguments
tensor
- The input tensor.dim
- The axis along which to sort.descending
- The sorting order.
§Returns
A tensor with the same shape as the input tensor and corresponding indices, where the elements are sorted by value and the indices map back to the original input tensor.
fn q_argsort(
tensor: <B as Backend>::QuantizedTensorPrimitive,
dim: usize,
descending: bool,
) -> <B as Backend>::IntTensorPrimitive
fn q_argsort( tensor: <B as Backend>::QuantizedTensorPrimitive, dim: usize, descending: bool, ) -> <B as Backend>::IntTensorPrimitive
Returns the indices that sort the elements of the input tensor
by value
along a given dimension.
This sort is unstable (i.e., may reorder equal elements).
§Arguments
tensor
- The input tensor.dim
- The axis along which to sort.descending
- The sorting order.
§Returns
A tensor with the same shape as the input tensor the indices map back to the original input tensor.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.