GithubHelp home page GithubHelp logo

symtensor's Introduction

SymTensor: An Efficient Abstraction for Group-Symmetric Tensor Contractions

SymTensor aims to automate management of group symmetries in tensor contractions. With the assumption that each symmetry block is the same size, SymTensor leverages a high-order dense tensor representation of the unique (up to symmetry) tensor elements. Each contraction is performed by first contracting small tensors that represent the symmetry group, transforming the operands, and performing a single dense tensor contraction once indices are aligned. The algorithm is described in the reference at the end of this README page.

Documentation

Complete documentation of software funcationality is generated via Sphinx and available here.

Building and Testing

Requirements

SymTensor relies on the tensorbackends package, which in turn requires NumPy and SciPy.

Building

SymTensor can be used with Cyclops to achieve distributed parallelism and CuPy for GPU acceleration, but tensorbackends and SymTensor can be built without either Cyclops or CuPy.

The library may be installed into a Python environment from the main source directory via

pip install .

Testing

Tests are contained in the subdirectory symtensor/test/

These may be executed as

python ./symtensor/test/test_nonsym.py;
python ./symtensor/test/test_pbc.py;
python ./symtensor/test/test_dmrg.py;
python ./symtensor/test/test_multi_operands.py

Example Codes

Aside from the test codes, a few examples of usage of symtensor with various backends are provided in symtensor/examples. These provide various examples for initializing tensors, including from a index-dependent function.

Benchmarks

Benchmarks for symtensor functionality, with each of the three backends, as well as reference implementations in pure NumPy are available in symtensor/benchmarks.

These benchmarks are used in the performance evaluation in the paper mentioned below.

Acknowledgements

Gao, Yang, Phillip Helms, Garnet Kin Chan, and Edgar Solomonik. "Automatic transformation of irreducible representations for efficient contraction of tensors with cyclic group symmetry." arXiv:2007.08056 (2020).

This software was developed by Yang Gao, with help from Phillip Helms, Garnet Chan, and Edgar Solomonik. To acknowledge our work, we would be grateful if users cite the above paper in any publications that use SymTensor for calculations or new software.

symtensor's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

alejandrogallo

symtensor's Issues

How to extend symtensor for non-abelian groups

I have tensors for which I know the irreps of each indices and their direct product, and I wanted to use symtensor to do contractions of these tensors. I think it's doable, although the irreps can have different dimensions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.