QuantumKitHub/TensorOperations.jl

Julia package for tensor contractions and related operations

What it solves

It simplifies the process of performing complex tensor operations by allowing users to write them using Einstein index notation, which is more intuitive than nested loops or multiple manual reshapes and contractions.

How it works

The library provides the @tensor macro, which enables users to express tensor contractions and additions using abstract index notation (Einstein summation convention). It supports multiple backends for execution, including cuTENSOR v2 for GPU acceleration, and integrates with ChainRulesCore.jl for automatic differentiation. It also allows for custom allocation strategies, such as using Bumper.jl for temporary objects.

Who it’s for

It is designed for researchers and developers working with high-dimensional arrays (tensors), particularly those in fields like quantum physics or machine learning, who need a concise way to define and optimize tensor contractions.

Highlights

  • Einstein Notation: Uses the @tensor macro to express operations concisely.
  • GPU Acceleration: Supports cuTENSOR v2 via CUDA.jl.
  • Automatic Differentiation: Includes reverse-mode rules for integration with AD frameworks.
  • Flexible Allocation: Supports custom allocation strategies for temporary objects to improve performance.

Related

  • Project
  • Project
  • Project
  • Project
  • Project