Skip to main content

tenferro_runtime/
lib.rs

1//! Traced graph runtime and extension dispatch infrastructure for tenferro.
2//!
3//! This crate owns graph construction, lowering to execution IR, graph
4//! execution, and backend-parametric extension runtime dispatch. Standard
5//! operations are lowered through the runtime's internal operation vocabulary;
6//! tensor storage and backend kernels live in `tenferro-tensor`.
7//!
8//! Use this crate directly when you want concrete tensor helpers or reusable
9//! traced graph execution without depending on `tenferro-ad`. Start with
10//! [`TypedTensor`] when the scalar type is fixed in Rust, [`Tensor`] when dtype
11//! is selected at runtime, and [`TracedTensor`] plus [`GraphCompiler`] and
12//! [`Runtime`] when the same expression should be compiled once and run
13//! repeatedly. Operation-family crates such as `tenferro-einsum`,
14//! `tenferro-linalg`, and `tenferro-fft` register extension runtimes through
15//! runtime engine registrations when compiled execution reaches those
16//! operations.
17//!
18//! User-facing guides live at
19//! <https://tensor4all.org/tenferro-rs/guides/choosing-an-api.html> and
20//! <https://tensor4all.org/tenferro-rs/guides/execution-models.html>.
21//!
22//! # Examples
23//!
24//! ```rust
25//! use tenferro_cpu::CpuEngine;
26//! use tenferro_runtime::{ExecutionEngine, GraphCompiler, Runtime, TracedTensor};
27//!
28//! let x = TracedTensor::from_vec_col_major(vec![2], vec![1.0_f64, 2.0]).unwrap();
29//! let y = (&x + &x).unwrap();
30//! let mut compiler = GraphCompiler::new();
31//! let program = compiler.compile(&y).unwrap();
32//! // One caller-held engine runs every slot of the prepared program.
33//! let mut engine = CpuEngine::serial();
34//! let mut builder = Runtime::builder();
35//! builder
36//!     .register_engine(tenferro_cpu::runtime_engine_registration(&engine).unwrap())
37//!     .unwrap();
38//! let runtime = builder.build().unwrap();
39//! let prepared = runtime.prepare(&program, &[], &[engine.target()]).unwrap();
40//! let out = runtime
41//!     .run(&mut [&mut engine], &prepared, &[])
42//!     .unwrap()
43//!     .pop()
44//!     .unwrap()
45//!     .into_tensor(&mut engine)
46//!     .unwrap();
47//! assert_eq!(out.as_slice::<f64>().unwrap(), &[2.0, 4.0]);
48//! ```
49
50#[doc(hidden)]
51pub mod ad_support;
52mod checkpoint;
53mod compiler;
54#[doc(hidden)]
55pub mod composite;
56pub mod error;
57mod exec;
58pub mod extension;
59pub mod extension_cache;
60mod extension_execution_context;
61pub mod graph;
62mod metadata;
63pub mod prelude;
64pub mod program;
65pub mod runtime;
66#[doc(hidden)]
67pub mod scalar_semantics;
68#[doc(hidden)]
69pub mod scale;
70mod segment;
71mod session_ext;
72mod shape_constraint;
73mod shape_infer;
74mod shape_packing;
75pub mod sym_dim;
76mod tensor;
77mod trace;
78pub mod traced;
79mod typed_session_ext;
80mod typed_tensor;
81
82pub use compiler::{CompilerOptions, OptimizerConfig};
83pub use error::{
84    ContextId, Error, ErrorPhase, Result, RuntimeFailureReasonRef, ShapeConstraintEvalError,
85};
86pub use extension_cache::{
87    ExtensionCacheKey, ExtensionCacheLimits, ExtensionCacheSelector, ExtensionCacheStore,
88};
89pub use extension_execution_context::ExtensionExecutionContext;
90pub use graph::{CompiledGraph, GraphCompiler};
91pub use runtime::{
92    assemble_executable_engine_registration, assemble_preparation_only_engine_registration,
93    CacheInFlightBehavior, CacheOwnerError, CacheOwnerFailure, CacheOwnerId, CoreCapabilityBundle,
94    CoreCapabilityBundleBuilder, CoreCapabilityKind, CorePrepareContext, Determinism,
95    DotGeneralPreparation, DotGeneralPrepareRequest, ElementwisePrepareRequest, ElementwiseRuntime,
96    EngineExecutionContractError, EngineId, EngineRegistration, EngineRegistrationMetadata,
97    EngineSnapshotView, EngineTarget, ErasedExecutionContext, EventDomainDriver, EventDomainError,
98    EventDomainId, EventDomainOperation, EventDomainRun, EventToken,
99    ExecutableEngineRegistrationConfig, ExecutionContextIdentity, ExecutionContextMismatch,
100    ExecutionEngine, ExecutionPolicy, ExecutionPolicyError, ExtensionEngine, ExtensionModule,
101    ExtensionModuleError, ExtensionModuleId, ExtensionModuleRegistrar, ExtensionPlanningConfig,
102    ExtensionPrepareRequest, HardwareClassId, IdentityError, IdentityKind,
103    ImmediateEventDomainDriver, IndexingPrepareRequest, IndexingRuntime, InputIngressContract,
104    InputIngressContractError, InputPlacementContract, InputSignature, InputSignatureContract,
105    InputSignatureEntry, InputSignatureError, InputSpecializationProjection,
106    InputSpecializationRequirements, InputSpecializationRequirementsBuilder,
107    InputSpecializationRequirementsError, LayoutClass, LayoutPrepareRequest, LayoutProjection,
108    LayoutRuntime, LayoutSpecialization, Output, PlacementConstraintError, PlacementProjection,
109    PlacementSpecialization, PreparationKeySummary, PreparationOnlyEngineRegistrationConfig,
110    PrepareCapability, PrepareError, PrepareOptions, PrepareOptionsKey, Prepared,
111    PreparedOperation, PreparedOperationBinding, PreparedOperationExecutor,
112    PreparedOperationExecutorHandle, PreparedOperationHandle, PreparedOperationPlan,
113    PreparedPlanCacheLimits, PreparedPlanCacheStats, ProgramPlacementConstraint,
114    ProviderContractError, ProviderDeviceIdentity, ProviderId, RankRequirement,
115    ReductionPrepareRequest, ReductionRuntime, RegistrationIdentity, RegistrationKey,
116    ResidentOutputContract, ResolvedPlanningConfig, ResolvedPlanningKey, ResolvedProgramPlacement,
117    Runtime, RuntimeCacheError, RuntimeCacheOwner, RuntimeCacheStats, RuntimeConfigBuilder,
118    RuntimeConfigError, RuntimeConfigSnapshot, RuntimeEpoch, RuntimeId, RuntimeInputContract,
119    RuntimeReconfiguration, RuntimeReconfigureError, RuntimeStateError, SpecializationError,
120    SpecializationProjection, SpecializationRequirements, StorageClass, TransferEndpoint,
121    TransferError, TransferProvider, TransferProviderContractError, TransferRequest,
122    UnsupportedReason,
123};
124pub use session_ext::TensorSessionOpsExt;
125#[doc(hidden)]
126pub use shape_constraint::ShapeGuard;
127pub use shape_packing::TracedSliceBuilder;
128pub use sym_dim::SymDim;
129pub use tenferro_ops::ShapeRelation;
130pub use tenferro_tensor::{
131    CacheStats, CompareDir, DType, DotGeneralConfig, Engine, GatherConfig, MemoryKind, PadConfig,
132    ScatterConfig, SliceConfig, Tensor, TensorRead, TensorScalar, TensorValue, TensorView,
133    TypedTensor, TypedTensorView,
134};
135pub use trace::{TraceContext, TraceValue, TracedGraph};
136pub use typed_session_ext::{TypedTensorMaskSessionOpsExt, TypedTensorSessionOpsExt};
137
138pub use traced::TracedTensor;