Welcome to Uni10, the Universal Tensor Network Library.
Uni10 is an open-source C++ library designed for the development of tensor network algorithms. Programming tensor network algorithms is tedious and prone to errors. The task of keeping track of tensor indices while performing contraction of a complicated tensor network can be daunting. It is desirable to have a platform that provides bookkeeping capability and optimization.
This software distinguishes itself from other available software solutions by providing the following advantages:
Fully implemented in C++.
Aimed toward applications in tensor network algorithms.
Provides basic tensor operations with an easy-to-use interface.
Provides a Network class to process and store the details of the graphical representations of the networks.
Implements a heuristic algorithm to search for an optimal pairwise contraction order based on the available computation and memory resources.
Provides a collection of Python wrappers which interact with the compiled C++ library to take advantage of the Python language for better code readability and faster prototyping, without sacrificing the speed.
Provides behind-the-scene optimization and acceleration.
Copyright and Changes
See GPL and LGPL for copyright conditions.
See ChangeLog for release notes and changes.
The latest Uni10 source code can be downloaded from github.
- cmake version > 2.8.12
- C++ compiler
- BLAS and LAPACK libraries and header files
- HDF5 library and header
- Doxygen (for documentation)
- Swig (for Python wrapper)
To build Un10, follow the following steps:
Create a build directory
Use Cmake to generate makefile
Build library and exmamples
Install library and examples (May require root access)
Using system c++, blas and lapack
> mkdir build > cd build > cmake </path/to/uni10/> > make > sudo make install
The installation path defaults to
To override the default path, use
> cmake -DCMAKE_INSTALL_PREFIX=</installation_path> </path/to/uni10/>
To use MKL and Intel compiler:
> cmake -DBUILD_WITH_MKL=on -DBUILD_WITH_INTEL_COMPILER=on </path/to/uni10/>
If cmake failes to find blas and lapack, specify the libraries by
> cmake -DBLAS_LIBRARIES=</path/to/blas> -DLAPACK_LIBRARIES=</path/to/lapack> </path/to/uni10/>
|Option||Description (Default value)|
|BUILD_WITH_MKL||Use Intel MKL for lapack and blas (off)|
|BUILD_WITH_INTEL_COMPILERS||Use Intel C++ compiler (off)|
|BUILD_PYTHON_WRAPPER||Build pyUni10 wrapper (off)|
|BUILD_EXAMPLES||Build C++ examples (on)|
|BUILD_DOC||Build Documentation (off)|
|BUILD_ARPACK_SUPPORT||Build ARPACK wrapper (off)|
|CMAKE_INSTALL_PREFIX||Installation location (/usr/local/uni10)|
API documentation can be found here
Developers and Maintainers
Ying-Jer Kao (National Taiwan University)
Pochung Chen (National Tsing-Hua University)
Yun-Hsuan Chou (National Taiwan University)
Chen-Yen Lai (University of California, Merced)
Yun-Da Hsieh (Code Base, GPU)
Tama Ma (CMake)
Sukhbinder Singh (Matlab Wrapper)
Help and Bug Reports
Please report bugs on Github by creating issues.
- CMake generated Xcode project not working
GUI for generating network files
Full GPU support