cotengra

Hyper optimized contraction trees for large tensor networks and einsums

APACHE-2.0 License

Downloads
42.4K
Stars
180

cotengra is a python library for contracting tensor networks or einsum expressions involving large numbers of tensors - the main docs can be found at cotengra.readthedocs.io. Some of the key feautures of cotengra include:

  • drop-in einsum and ncon replacement
  • an explicit contraction tree object that can be flexibly built, modified and visualized
  • a 'hyper optimizer' that samples trees while tuning the generating meta-paremeters
  • dynamic slicing for massive memory savings and parallelism
  • support for hyper edge tensor networks and thus arbitrary einsum equations
  • paths that can be supplied to numpy.einsum, opt_einsum, quimb among others
  • performing contractions with tensors from many libraries via cotengra,
    even if they don't provide einsum or tensordot but do have (batch) matrix
    multiplication