Skip to main content

tensor4all_tensorbackend/
lib.rs

1#![warn(missing_docs)]
2//! Tensor storage and linear algebra backend for tensor4all.
3//!
4//! This crate provides:
5//! - [`Storage`]: Dynamic snapshot storage for logical tensor values
6//! - [`StructuredStorage`]: `axis_classes`-aware materialized snapshots
7//! - [`AnyScalar`]: Dynamic scalar type backed by rank-0 `tenferro::Tensor`
8//! - tenferro-backed execution helpers for tensor algebra
9//!
10//! ## Feature Flags
11//!
12//! - `backend-tenferro` (default): Use tenferro backend for linalg/einsum
13
14/// Dynamic scalar types supporting f64 and Complex64.
15mod any_scalar;
16/// Backend dispatch for dense linear algebra operations.
17mod backend;
18/// Process-global tenferro execution helpers.
19mod context;
20/// Dense column-major matrix type and backend-backed matrix utilities.
21mod matrix;
22/// Process-level memory pressure helpers.
23mod memory;
24/// Tensor snapshot storage types and low-level dense/diagonal kernels.
25mod storage;
26pub(crate) mod tenferro_bridge;
27/// Supported public tensor element types and native constructor hooks.
28mod tensor_element;
29
30pub use any_scalar::AnyScalar;
31pub use backend::{
32    full_piv_lu_backend, full_piv_lu_matrix, qr_backend, solve_backend, solve_matrix, svd_backend,
33    BackendLinalgScalar, FullPivLuMatrixResult, FullPivLuResult, MatrixSolveScalar, SvdResult,
34};
35pub use context::{default_eager_ctx, with_default_backend};
36pub use matrix::{
37    from_vec2d, mat_mul, submatrix, submatrix_argmax, swap_cols, swap_rows, transpose, BlasMul,
38    Matrix, MatrixScalar,
39};
40pub use memory::{release_process_allocator_cached_memory, AllocatorPressureRelief};
41pub use storage::{
42    contract_storage, make_mut_storage, mindim, Storage, StorageError, StorageKind, StorageResult,
43    StorageScalar, StructuredStorage, SumFromStorage,
44};
45pub use tenferro_bridge::{
46    axpby_native_tensor, axpby_storage_native, conj_native_tensor, contract_native_tensor,
47    contract_storage_native, dense_native_tensor_from_col_major, diag_native_tensor_from_col_major,
48    einsum_native_tensor_reads, einsum_native_tensors, einsum_native_tensors_owned,
49    native_tensor_primal_to_dense_c64_col_major, native_tensor_primal_to_dense_col_major,
50    native_tensor_primal_to_dense_f64_col_major, native_tensor_primal_to_diag_c64,
51    native_tensor_primal_to_diag_f64, native_tensor_primal_to_storage, outer_product_native_tensor,
52    outer_product_storage_native, permute_native_tensor, permute_storage_native,
53    print_and_reset_native_einsum_profile, qr_native_tensor, reset_native_einsum_profile,
54    reshape_col_major_native_tensor, scale_native_tensor, scale_storage_native,
55    storage_payload_native_read_input, storage_to_native_tensor, sum_native_tensor,
56    svd_native_tensor, tangent_native_tensor, NativeTensorReadInput,
57};
58pub use tensor_element::TensorElement;