scalapack


Introduction:

SCALAPACK is a library for the configuration, distribution, and
solution of linear algebra problems using distributed memory and
parallel processing.

SCALAPACK includes functions to solve a linear system A*x=b, or
to find the matrix eigensystem, for a variety of matrix types.

SCALAPACK is a parallel implementation of the block-oriented
LAPACK linear algebra library,
relying on the Parallel Basic Linear Algebra Communication Subprograms
(PBLACS) to copy blocks of data between processors as needed, and the
Parallel Basic Linear Algebra Subprograms (PBLAS) to effectively carry
out the necessary linear algebra operations on the distributed system.
As with LAPACK, a single subroutine call typically carries out the
requested computation.

SCALAPACK requires the the user to configure the
processors and distribute the matrix data, before the problem
can be solved.

Web Site:

The ScaLAPACK web page at netlib.org:

http://www.netlib.org/scalapack

Reference:

  • Susan Blackford, Jaeyoung Choi, Andrew Cleary, Eduardo D'Azevedo,
    James Demmel, Inderjit Dhillon, Jack Dongarra, Sven Hammarling,
    Greg Henry, Antoine Petitet, Ken Stanley, David Walker,
    Clinton Whaley,
    The ScaLAPACK User's Guide,
    SIAM, 1997,
    ISBN13: 978-0-898713-97-8.

Usage:

On any ARC cluster, check the installation details
by typing "module spider scalapack".

SCALAPACK requires that the appropriate modules be loaded before it can
be used. One version of the appropriate commands for use on NewRiver is:

module purge
module load intel/15.3
module load impi/5.0
module load mkl/11.2.3
module load scalapack/2.0.2
    

Examples:

The following batch file uses 4 MPI processes to set up and solve
a linear algebra problem distributed over a 2x2 grid of processes:

#! /bin/bash
#
#PBS -l walltime=0:05:00
#PBS -l nodes=1:ppn=4
#PBS -W group_list=newriver
#PBS -q open_q
#PBS -j oe
#
cd $PBS_O_WORKDIR
#
module purge
module load intel/15.3
module load impi/5.0
module load mkl/11.2.3
module load scalapack/2.0.2
#
mpiifort -c scalapack_test.f90
#
mpiifort -o scalapack_test -mkl scalapack_test.o -L$MKL_LIB -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64
#
mpirun -np 4 ./scalapack_test > scalapack_newriver.txt

A complete set of files to carry out a similar process are available in
scalapack_example.tar