tensor4all GitHub

Software

Pick by what you want to do

tensor4all maintains two generations of software. The established C++, Python and Julia libraries are stable and documented. The Rust stack is where new development happens, and its lower layers are general purpose tools for computational physics, not only for tensor networks.

The Rust stack New

A layered set of Rust libraries. Each layer depends only on the layers below it, and each can be used on its own. All of them pass explicit execution contexts instead of starting hidden thread pools, so they compose predictably inside MPI programs, Julia sessions and other host codes.

Boxes link to the repositories. The stack overview explains each layer, with guides for tensor network users and for backend developers.

tensor4all-rs: tensor network algorithms

The next generation implementation of the tensor4all algorithms: tensor cross interpolation, quantics tensor trains with Fourier and shift operators, tree tensor networks of arbitrary topology, patching and HDF5 I/O. A C API serves language bindings, and Tensor4all.jl is its Julia frontend for light use and teaching.

New algorithms land here first. It suits early adopters comfortable with Rust; crates are used as git dependencies for now.

tenferro-rs: tensor runtime and autodiff

Typed and dynamic dense tensors with einsum, linear algebra and FFT on CPU, CUDA and XLA backends. Eager mode offers PyTorch style backward(); traced mode offers JAX style graph transforms with VJP, JVP and higher order derivatives. Column major storage and explicit device control make it a natural fit for code that talks to LAPACK, Fortran or Julia.

Ready for production use with a relatively stable API. Start with tenferro-runtime, tenferro-cpu and the operation crates you need. Background: Introducing tenferro-rs (日本語, 中文).

Kernels and infrastructure

These libraries know nothing about tensor networks or about tenferro’s tensor types. They take borrowed strided views and an explicit context, which keeps them small and reusable from other codes, including from C.

tcontract

Binary tensor contraction over arbitrary strides, with a TAPP and DLPack C ABI. Benchmark results.

git

tlinalg

Batched SVD, QR, LU, Cholesky and eigensolvers, faer backed or LAPACK backed, optionally parallelized along the batch dimension, with a C API. Benchmark results.

git

cpueinsum

N-ary einsum over integer labels with a caller supplied contraction order, with a C API. Benchmark results.

git

strided-rs

The strided view types every layer shares, with permutation and elementwise kernels. Benchmarks.

crates.io 0.4.8

hataori

Data parallel map and pmap over serial, Rayon, MPI and hybrid execution.

git

t4a-faer

Our fork of faer, the pure Rust linear algebra library by Sarah Quinones. It adds strided and batched entry points, caller owned workspaces, an explicit thread policy and numerical fixes; every change is recorded in its patch ledger. Benchmark results against upstream.

crates.io t4a-faer 0.24.4

Benchmarks

Performance claims are backed by public benchmark repositories, kept separate from the libraries so that results can be keyed by commit and hardware. Where a campaign publishes its results as a web page, the link is in the first column. The main entry point is the tenferro-benchmark results, which compare the whole stack against PyTorch and JAX.

Results Repository What it measures
tenferro-benchmark source tenferro-rs against PyTorch and JAX on CPU and GPU
tcontract-benchmark source Binary strided contraction in tcontract
tlinalg-benchmark source Batched factorizations in tlinalg
cpueinsum-benchmark source N-ary einsum in cpueinsum over a standardized instance corpus
faer-benchmark source The t4a-faer fork against upstream faer, keyed by fork commit and upstream revision
(repository only) tensor4all-benchmark Tensor network algorithms in tensor4all-rs: QTT products and MPO-MPO contraction
(repository only) strided-rs-benchmark-suite strided-rs kernels against HPTT, Julia Base and Strided.jl

Release status changes quickly; the repository table in the stack overview is kept current.

Established libraries

Stable, documented and in use in published work. Choose these when you need a dependable workflow now.

C++ and Python

xfac

The original implementation of tensor cross interpolation, with Python bindings.

Julia

TCI in Julia

Julia tutorials →

Maintenance packages

Kept working for existing users, not recommended for new projects.

Package Status
Quantics.jl High level QTT operations on ITensors.jl
FastMPOContractions.jl Existing MPO contraction workflows
TCIITensorConversion.jl Historical; now an extension of TensorCrossInterpolation.jl

Old T4A****.jl repositories were experiments and are not maintained as public libraries.