Giter VIP home page Giter VIP logo

tensor-tools's Introduction

tensor-tools logo

tensor-tools parallel

What is it?

The parallel verison of tensor-tools is a parallel tensor-network library currently customized for performing DMRG (with quantum numbers) in parallel. The parallelization is done via MPI over nodes, using CTF tensors. It is particularly powerful for spin-systems or those without conserved U(1) symmetries.
Not only can it reach bond-dimensions which are inaccessible serially, but (if we extrapolate what a serial code could do on a big-enough machine) it achieves a 10x speedup at no extra cost in node-hours. See arxiv:2007.05540.

Authors

The parallel version of tensor-tools was developed by Ryan Levy under the guidance of Bryan Clark with CTF and other help from Edgar Solomonik. It is built on top of the serial version of tensor-tools which was written (circa 2017) by Xiongjie Yu (under the guidance of Clark); the serial code now also has additional contributions/bug-fixes from Ryan Levy.

Installation and Running

Requirements:

  • CTF
    • compiled with lapack/scalapack support; hptt support preferred
    • example configure line: ./configure --no-dynamic --build-hptt --with-scalapack' 'LIB_PATH=-L${MKLROOT}/lib/intel64/' 'LIBS=-lmkl_scalapack_lp64 -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lmkl_blacs_intelmpi_lp64 -Wl,--end-group -lpthread -lm'
    • If using sparse tensors, intel MKL is strongly suggested
  • HDF5
  • Eigen3
  • C++11 support (GCC 6.3.0/8.2.0, Intel 18.0.2/18.0.3.222 compilers tested)

After installing the required libraries, simply make a copy of Makefile.in and adjust the variables to their pointed location. Examples of a linux system, Blue Waters, and Stampede2 are provided. Then build (make -j) which will create an executable run based on the project/main.cpp file.

To execute, launch with MPI using mpirun -n [# of procs] run [inputFile] and follow CTF good practice such as export OMP_NUM_THREADS=1 and CTF_PPN=[# of procs/node].

Conversion

Conversion to and from ITensor files is fully supported for v2 and v3.1.x (to be determined). See [link repository here].


External Code

We utilize both the AutoMPO system from ITensor and some of their lattice code, to have better interoperability between the two. See EXTERNAL.md for more.

Some of the general tensor-tools interface/API was also inspired by ITensor.

tensor-tools's People

Contributors

bkclark avatar ryanlevy avatar xyu40 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

c-wanen

tensor-tools's Issues

[parallel] CTF needs const data view

We make copies of tensors just to modify their indices, we should instead just pass the data as a const and then do the index operations. This might clean up the permuted index interface too

qdim type discrepancy

CTF wants ints as dimensions, we store them as ints inside q(s)tensor but as unsigned elsewhere

[parallel] convert serial functions for parallel

A number of non DMRG related API calls for tensors (+=,-=, etc) currently have assert(1==2) and were not rewritten yet for the CTF backend.

Files like tensor_cg.cpp and assert.cpp should also contain code that hasn't made its way back yet too.

[serial] - doesn't work with latest tblis version

There's some breaking change between v1.1.2 and later versions of tblis.
The code has been updated so that the API works on v1.1.2 and v1.2.0 (with the exception of some dgemm_ call). Orthogonality is broken after SVD for the second site However.

When comparing before and after, all the davidson eigenvalues are correct but the data layout when being passed to SVD seems to be different.

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.