TCM
UoC crest

ScaLAPACK

ScaLAPACK is a version of the linear algebra package LAPACK combined with MPI to work on distributed arrays. It is quiet stable, in that version 2 was released in 2011, and there has not been an update since 2.0.2 in 2012. One change with version 2 is that the BLACS library is now included in ScaLAPACK, so old documentation which suggests that one needs both is no longer correct.

Because ScaLAPACK is easy to build, but should be built with the same verison of both MPI and Fortran compiler that one intends to use for whichever code links against it, we are not very good at providing pre-built versions: it is far simpler to do its oneself.

ScaLAPACK is found on Netlib's ScaLAPACK page. Compilation is simple. One untars it, copies SLmake.inc.example to SLmake.inc, and makes a few changes:

Intel Fortran

Suitable definitions for use with ifort and TCM's default MPI version would be:

CDEFS         = -DAdd_
FC            = mpifort
CC            = mpicc 

BLASLIB       = -mkl=sequential
LAPACKLIB     = 
LIBS          = $(LAPACKLIB) $(BLASLIB)

(Note that MKL includes both LAPACK and BLAS, and that adding =sequential prevents the use of a threaded MKL library, on the assumption that mixing threading and MPI may be unhelpful.)

Gnu Fortran

The corresponding definitions for gfortran and the system's default LAPACK and BLAS libraries would be:

CDEFS         = -DAdd_
FC            = mpgfortran
CC            = mpgcc

BLASLIB       = -lblas
LAPACKLIB     = -llapack
LIBS          = $(LAPACKLIB) $(BLASLIB)

All

One can then type "make". The result is simply a static library, libscalapack.a, which can be freely copied. To link with it, one must specify any libraries used on the LIBS line when it was compiled.

Laziness

Sometimes versions are to be found in /rsscratch/Apps/ScaLAPACK.