Eötvös Quantum Utilities  v4.9.146
Providing the Horsepowers in the Quantum Realm
EQuUs MKL component

The EQuUs MKL component is an interface to the Intel MKL PARDISO package providing a high-performance, robust, memory efficient, and easy to use software package for solving large sparse linear systems of equations on shared memory multiprocessors.

EQuUs MKL component uses the MEX technology to incorporate C, C++ and fortran libraries into Matlab and Octave packages. The PARDISO package enables us to calculate individual elements of the inverse of a sparse matrix. Calculating, for example, the Green's function between the surface points of the scattering region, or evaluating the density of states on the atomic sites enables us to treat large scale systems including disorders and other kind of inhomogeneities or performing self-consistent calculations. The PARDISO solver is based on the following publications:

  • M. Luisier, O. Schenk et.al., Euro-Par 2013, LNCS 8097, F. Wolf, B. Mohr, and D. an Ney (Eds.), Springer-Verlag Berlin Heidelberg, pp. 533-544, 2013.
  • O. Schenk, M. Bollhofer, and R. Romer, SIAM Review 50 (2008), pp. 91-112.
  • O. Schenk, A. Wachter, and M. Hagemann, Journal of Computational Optimization and Applications, pp. 321-341, Volume 36, Numbers 2-3 (April, 2007).

The EQuUs MKL component is compatible with both MATLAB and octave packages, however, one need to compile separate binaries for the two products. The implemented Intel MKL PARDISO routines can treat structurally symmetric matrices (thus the matrix does not to be Hermitian). To compile the EQuUs MKL component please following the installation guide. EQuUs MKL can be used as an independent component it does not depend on the other EQuUs components. For technical support or for implementing new functionalities please do not hesitate to contact us.

Usage of the EQuUs MKL component

EQuUs MKL component contains of individual functions that are independent from other EQuUs components. After a successful compilation (see section Installation Guide) the generated MEX files can be invoked from the MATLAB/octave command line as described here. The description of the individual functions can be found here:

Installation Guide

System requirements

EQuUs MKL was successfully compiled and tested with Intel compiler v16.0.2 including MKL v11.2.3.187 and with Intel compiler v12.1.5 including MKL v10.3.11. EQuUs MKL can also be compiled and linked with the GNU compiler)

Download

Download the EQuUs v4.9.146 from the list of provided stable packages. Altrenatively EQuUs v4.9.146 package can be downloaded by the shell command wget http://eqt.elte.hu/equus/Downloads/EQuUs_v4.9.146.tar.gz

Unpack

Unpack the downloaded package into the directory "/path/to/EQuUs" with the commands

mkdir /path/to/EQuUs

and

tar -xzf EQuUs v4.9.146.tar.gz -C /path/to/EQuUs

to create the output directory and unpack the package respectively.

Install

Currently the configuration files for the compilation are given only for Unix system. For Windows system please create appropriate configuration files. (Binaries compiled on Unix system can not be used on other operating systems.) To compile the EQuUs MKL component one needs to setup environment variables EQUUSDIR=/path/to/EQuUs and the standard built-in environment variables of the Intel compiler. After the environment variables were successfully set, please open and edit the file /path/to/EQuUs/MKL/commonvars.in. This file contains some other variables needed to be also given for a successful installation:

  • MATLABROOT=path/to/the/MATLAB/installation
  • OCTAVEROOT=path/to/the/octave/installation
  • COMPILER_F=path/to/the/C/compiler/binary
  • COMPILER_C=path/to/the/C/compiler/binary

For the compilation use the provided makefile in the directory /path/to/EQuUs/MKL/. The makefile can be run with the following syntax: make [debug] [THREAD=SEQ/PAR/MIC] [LINKING=static/dynamic] [BUILD=matlab/octave]

  • Use the option debug for verbose compilation.
  • Use the option THREAD=SEQ for single threaded compilation, THREAD=PAR for multi threaded (openMP) compilation, or THREAD=MIC for Intel MIC compilation.
  • Use the option LINKING=static for static linking of the produced MEX files (thus the MEX files becomes transferable) or LINKING=dynamic for dynamic linking (using shared libraries provided by the system).
  • Use the option BUILD=matlab for compilation for MATLAB or BUILD=octave for compilation for octave.