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
.