Programming‎ > ‎MPS Bundle‎ > ‎

Components


The libraries that are needed by mps-bundle are listed below. The list is rather exhaustive, and depending on your platform you many not need some of them.
  • f2c is my own version of a fortran to C99 compiler that builds on the old compiler to C. The resulting code also builds with C++ and is used by various other libraries. cblapack is a LAPACK+BLAS replacement that works
  • In an ideal world, every computer would ship with an optimized version of the LAPACK and BLAS libraries for manipulating matrices, solving linear equations and all other algebraic operations. In many operating systems this is not possible, or is only available at a high cost. It is for this reason that my libraries can be built with various alternatives that are out there:
    • Atlas is a highly optimized version of BLAS and some LAPACK routines that is available for Unix-like platforms. It is computer generated and has to be built for the computer it runs in, but it allows to use multiple cores.
    • Veclib is a version of atlas that is built by Apple and distributed with its operating system.
    • Intel MKL is probably the best one out there, outperforming all alternatives when using a multithreaded mode, that is, distributing the load on multiple cores in the same computer.
    • cblapack is the last resource. It is a version of LAPACK and BLAS that has been compiled with my f2c compiler and thus runs on any computer with a modern C compiler. I use it on the windows platform. Performance is decent for testing and even some simulations, but you should get something better for production.
  • libtensor is a very high-level library that mimics Matlab's approach to linear algebra, introducing multidimensional arrays, operations on those arrays that include matrix-matrix and matrix-vector multiplication, solving systems of equations, eigenvalue computations, etc. It has a very clever copy-on-write scheme that makes it quite memory efficient, and it profits from the multithreading capabilities of the libraries above, but it is not thread safe.
  • mpsc++  is a library that implements rather sophisticated algorithms for many-body Quantum Mechanics, including Matrix Product States, a relative of DMRG, which can be used to compute ground states, study time evolution, solving scattering equations, etc.
As mentioned in the introduction, keeping all these libraries in the same computer and also updating them regularly is a rather inconvenient task. It is for this reason that I created mps-bundle, a wrapper that downloads and installs all those libraries one after another. These pages describe the wrapper.