Jean Zay: The ScaLAPACK library


ScaLAPACK is available through the Intel MKL library (recommended version) or freely through netlib. ScaLAPACK is a library composed of a set of Fortran subroutines which allows the parallel solving of dense linear algebra problems by direct numerical methods. This library depends in particular on the PBLAS (Parallel BLAS) and BLACS (Basic Linear Algebra Communication Subprograms) parallel libraries on which it bases the realisation in parallel of the elementary matrix operations and the inter-process communications respectively, via MPI for example.

Installed versions

  • Intel MKL with the Intel compilers (recommended version)
  • 2.0.2 with the GCC 8.2.0 compiler and Intel MPI
  • 2.0.2 with the GCC 9.1.0 compiler and Intel MPI
  • 2.0.2 with the Intel 2019.4 compiler and Intel MPI

Usage of ScaLAPACK via MKL

MKL contains optimised implementations of the ScaLAPACK library. The library is directly accessible via the Intel compiler with the module command:

$ module load intel-compilers/19.0.4 intel-mkl/19.0.4

To know which versions are installed on the machine:

$ module avail intel-compilers
$ module avail intel-mkl

At the linking, you need to add the following options for the linking to actually be done:

 '-L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_lp64 -lpthread -lm'

These options can vary from one version to another depending on the compiler which is used. The options can be found via the Intel MKL Link Line Advisor provided by the Intel documentation.

Usage of ScaLAPACK in free version

The library is accessible via the command:

$ module load netlib-scalapack

To know which versions are installed on the machine:

$ module avail netlib-scalapack

It is also recommended to pre-load the Intel MPI library:

$ module load intel-mpi-19

Important: At the linking, it is necessary to add the '-lscalapack' option so that the linking actually takes place.