Skip to main content

TraceContextEinsumExt

Trait TraceContextEinsumExt 

Source
pub trait TraceContextEinsumExt {
    // Required methods
    fn einsum(
        &mut self,
        inputs: &[TraceValue],
        subscripts: &str,
    ) -> Result<TraceValue>;
    fn einsum_notation(
        &mut self,
        inputs: &[TraceValue],
        notation: &EinsumNotation,
    ) -> 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_notation_with(
        &mut self,
        inputs: &[TraceValue],
        notation: &EinsumNotation,
        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§

Source

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.

Source

fn einsum_notation( &mut self, inputs: &[TraceValue], notation: &EinsumNotation, ) -> Result<TraceValue>

Trace rank-unresolved notation using the default optimizer policy.

§Examples
use tenferro_einsum::{EinsumAxis, EinsumNotation};
let notation = EinsumNotation::new(&[&[EinsumAxis::Ellipsis]], &[]);
assert_eq!(notation.input_count(), 1);
§Errors

Returns Error::InvalidSubscripts for invalid axis tokens, Error::Validation for invalid input metadata, Error::Planning for symbolic ellipsis or an invalid optimizer policy, or Error::Runtime for graph-build failures.

Source

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.

Source

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.

Source

fn einsum_notation_with( &mut self, inputs: &[TraceValue], notation: &EinsumNotation, optimize: EinsumOptimize, ) -> Result<TraceValue>

Trace rank-unresolved notation with an explicit optimizer policy.

§Examples
use tenferro_einsum::{EinsumAxis, EinsumNotation};
let notation = EinsumNotation::new(&[&[EinsumAxis::Ellipsis]], &[]);
assert_eq!(notation.input_count(), 1);
§Errors

Returns Error::InvalidSubscripts for invalid axis tokens, Error::Validation for invalid input metadata, Error::Planning for symbolic ellipsis or an invalid optimizer policy, or Error::Runtime for graph-build failures.

Source

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.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§