#[doc(hidden)]
pub mod ad_support;
mod checkpoint;
mod compiler;
pub mod error;
mod exec;
pub mod extension;
pub mod extension_cache;
pub mod extension_runtime;
pub mod graph;
mod metadata;
#[doc(hidden)]
pub mod scalar_semantics;
mod segment;
mod shape_infer;
mod shape_packing;
pub mod sym_dim;
mod tensor;
pub mod traced;
mod typed_tensor;
pub use compiler::{CompilerOptions, OptimizerConfig};
pub use error::{ContextId, Error, Result};
pub use extension_cache::{
ExtensionCacheKey, ExtensionCacheLimits, ExtensionCacheSelector, ExtensionCacheStore,
};
pub use extension_runtime::{
ExtensionExecutionContext, ExtensionExecutor, ExtensionRegistry, ExtensionRuntime,
ExtensionRuntimeRegistryError,
};
pub use graph::{
GraphCompiler, GraphCompilerCacheStats, GraphExecutor, GraphExecutorCacheStats,
GraphInstructionView, GraphOpView, GraphProgram, GraphProgramInput,
GraphProgramLoweringShapeError, GraphProgramLoweringView,
};
pub use sym_dim::SymDim;
pub use tenferro_tensor::{
CacheStats, CompareDir, DType, DotGeneralConfig, GatherConfig, PadConfig, ScatterConfig,
SliceConfig, Tensor, TensorBackend, TensorRead, TensorScalar, TensorValue, TensorView,
TypedTensor, TypedTensorView,
};
pub trait TensorOpsExt {
fn convert<B: TensorBackend>(
&self,
to: DType,
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn cast<B: TensorBackend>(&self, to: DType, backend: &mut B)
-> tenferro_tensor::Result<Tensor>;
fn add<B: TensorBackend>(
&self,
rhs: &Tensor,
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn sub<B: TensorBackend>(
&self,
rhs: &Tensor,
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn mul<B: TensorBackend>(
&self,
rhs: &Tensor,
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn div<B: TensorBackend>(
&self,
rhs: &Tensor,
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn pow<B: TensorBackend>(
&self,
rhs: &Tensor,
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn maximum<B: TensorBackend>(
&self,
rhs: &Tensor,
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn minimum<B: TensorBackend>(
&self,
rhs: &Tensor,
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn neg<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn abs<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn sign<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn conj<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn exp<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn log<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn sin<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn cos<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn tanh<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn sqrt<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn rsqrt<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn expm1<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn log1p<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<Tensor>;
fn compare<B: TensorBackend>(
&self,
rhs: &Tensor,
dir: CompareDir,
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn where_select<B: TensorBackend>(
&self,
on_true: &Tensor,
on_false: &Tensor,
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn clamp<B: TensorBackend>(
&self,
lower: &Tensor,
upper: &Tensor,
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn matmul<B: TensorBackend>(
&self,
rhs: &Tensor,
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn reshape<B: TensorBackend>(
&self,
shape: &[usize],
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn transpose<B: TensorBackend>(
&self,
perm: &[usize],
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
fn reduce_sum<B: TensorBackend>(
&self,
axes: &[usize],
backend: &mut B,
) -> tenferro_tensor::Result<Tensor>;
}
pub trait TypedTensorOpsExt<T: TensorScalar> {
fn add<B: TensorBackend>(
&self,
rhs: &TypedTensor<T>,
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
fn sub<B: TensorBackend>(
&self,
rhs: &TypedTensor<T>,
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
fn mul<B: TensorBackend>(
&self,
rhs: &TypedTensor<T>,
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
fn div<B: TensorBackend>(
&self,
rhs: &TypedTensor<T>,
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
fn pow<B: TensorBackend>(
&self,
rhs: &TypedTensor<T>,
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
fn maximum<B: TensorBackend>(
&self,
rhs: &TypedTensor<T>,
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
fn minimum<B: TensorBackend>(
&self,
rhs: &TypedTensor<T>,
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
fn neg<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn abs<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn sign<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn conj<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn exp<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn log<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn sin<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn cos<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn tanh<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn sqrt<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn rsqrt<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn expm1<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn log1p<B: TensorBackend>(&self, backend: &mut B) -> tenferro_tensor::Result<TypedTensor<T>>;
fn compare<B: TensorBackend>(
&self,
rhs: &TypedTensor<T>,
dir: CompareDir,
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<bool>>;
fn clamp<B: TensorBackend>(
&self,
lower: &TypedTensor<T>,
upper: &TypedTensor<T>,
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
fn matmul<B: TensorBackend>(
&self,
rhs: &TypedTensor<T>,
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
fn reduce_sum<B: TensorBackend>(
&self,
axes: &[usize],
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
fn reshape<B: TensorBackend>(
&self,
shape: &[usize],
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
fn transpose<B: TensorBackend>(
&self,
perm: &[usize],
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
fn broadcast_in_dim<B: TensorBackend>(
&self,
shape: &[usize],
dims: &[usize],
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
}
pub trait TypedTensorMaskOpsExt {
fn where_select<T: TensorScalar, B: TensorBackend>(
&self,
on_true: &TypedTensor<T>,
on_false: &TypedTensor<T>,
backend: &mut B,
) -> tenferro_tensor::Result<TypedTensor<T>>;
}
pub use traced::TracedTensor;