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.
Introduction
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 Release Notes for release notes and changes.
Installation
Download
The latest Uni10 source code can be downloaded from
Sourceforge.
Binary builds of pyUni10 is available here.
Requirements
Build
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)
Examples
Using system c++, blas and lapack
The installation path defaults to
/usr/local/uni10.To override the default path, use
CMAKE_INSTALL_PREFIX:To use MKL and Intel compiler:
If cmake failes to find blas and lapack, specify the libraries by
Build Options
pyUni10 Tutorials
Tutorials for pyUni10 can be found here.
Developers
Yun-Da Hsieh (National Taiwan University)
Ying-Jer Kao (National Taiwan University)
Pochung Chen (National Tsing-Hua University)
Tama Ma (Singapore National University)
Sukhbinder Singh (Macquarie University)
Help and Bug Reports
Please send bug reports to Uni10Support
Known issues
To Do
Complex Data Type
GUI for generating network files