pub trait TraceContextEinsumExt {
// Required methods
fn einsum(
&mut self,
inputs: &[TraceValue],
subscripts: &str,
) -> Result<TraceValue>;
fn einsum_subscripts(
&mut self,
inputs: &[TraceValue],
subscripts: &EinsumSubscripts,
) -> Result<TraceValue>;
fn einsum_with(
&mut self,
inputs: &[TraceValue],
subscripts: &str,
optimize: EinsumOptimize,
) -> Result<TraceValue>;
fn einsum_subscripts_with(
&mut self,
inputs: &[TraceValue],
subscripts: &EinsumSubscripts,
optimize: EinsumOptimize,
) -> Result<TraceValue>;
}Expand description
Backend-neutral einsum tracing methods for [TraceContext].
Each method records one semantic einsum extension operation. Contraction path materialization and provider selection remain compiler/runtime work.
§Examples
use tenferro_einsum::TraceContextEinsumExt;
use tenferro_ops::dim_expr::DimExpr;
use tenferro_runtime::program::ProgramInputSpec;
use tenferro_runtime::TraceContext;
use tenferro_tensor::DType;
let matrix = || {
ProgramInputSpec::new(
DType::F64,
[DimExpr::Const(2), DimExpr::Const(2)],
)
};
let mut trace = TraceContext::new();
let lhs = trace.input(matrix()).unwrap();
let rhs = trace.input(matrix()).unwrap();
let output = trace.einsum(&[lhs, rhs], "ij,jk->ik").unwrap();
let graph = trace.finish(&[output]).unwrap();
assert_eq!(graph.program().operations().count(), 1);Required Methods§
Sourcefn einsum(
&mut self,
inputs: &[TraceValue],
subscripts: &str,
) -> Result<TraceValue>
fn einsum( &mut self, inputs: &[TraceValue], subscripts: &str, ) -> Result<TraceValue>
Trace textual einsum notation using the default optimizer policy.
§Errors
Returns Error::InvalidSubscripts for malformed notation,
Error::Validation for invalid input metadata, Error::Planning
for an invalid optimizer policy, or Error::Runtime when semantic
program construction fails.
Sourcefn einsum_subscripts(
&mut self,
inputs: &[TraceValue],
subscripts: &EinsumSubscripts,
) -> Result<TraceValue>
fn einsum_subscripts( &mut self, inputs: &[TraceValue], subscripts: &EinsumSubscripts, ) -> Result<TraceValue>
Trace parsed einsum notation using the default optimizer policy.
§Errors
Returns Error::Validation for invalid input metadata,
Error::Planning for an invalid optimizer policy, or
Error::Runtime when semantic program construction fails.
Sourcefn einsum_with(
&mut self,
inputs: &[TraceValue],
subscripts: &str,
optimize: EinsumOptimize,
) -> Result<TraceValue>
fn einsum_with( &mut self, inputs: &[TraceValue], subscripts: &str, optimize: EinsumOptimize, ) -> Result<TraceValue>
Trace textual einsum notation with an explicit optimizer policy.
§Errors
Returns Error::InvalidSubscripts for malformed notation,
Error::Validation for invalid input metadata, Error::Planning
for an invalid optimizer policy, or Error::Runtime when semantic
program construction fails.
Sourcefn einsum_subscripts_with(
&mut self,
inputs: &[TraceValue],
subscripts: &EinsumSubscripts,
optimize: EinsumOptimize,
) -> Result<TraceValue>
fn einsum_subscripts_with( &mut self, inputs: &[TraceValue], subscripts: &EinsumSubscripts, optimize: EinsumOptimize, ) -> Result<TraceValue>
Trace parsed einsum notation with an explicit optimizer policy.
§Errors
Returns Error::Validation for invalid input metadata,
Error::Planning for an invalid optimizer policy, or
Error::Runtime when semantic program construction fails.