
Introduction
ScaLAPACK is a library of highperformance linear algebra
routines for distributedmemory messagepassing MIMD
computers and networks of workstations supporting PVM
and/or MPI. It is a continuation of
the LAPACK project, which
designed and produced analogous software for workstations, vector
supercomputers, and sharedmemory parallel computers. The goals of both
projects are efficiency (to run as fast as possible),
scalability (as the problem size and number of processors grow),
reliability (including error bounds), portability (across all important parallel
machines), flexibility (so users can construct new routines from welldesigned
parts), and ease of use (by making the interface to LAPACK and ScaLAPACK look
as similar as possible).
The ScaLAPACK library contains routines for solving systems of
linear equations, least squares, eigenvalue and singular value problems. They
can also handle many associated computations such as matrix
factorizations or estimation of condition numbers. The ScaLAPACK routines are based on
blockpartitioned algorithms in order to minimize the frequency of data movement. The fundamental
building blocks of the ScaLAPACK library are distributedmemory versions of the
Level 1, Level 2, and Level 3 BLAS, called the Parallel BLAS
(PBLAS),
and a set of Basic Linear Algebra Communication Subprograms
(BLACS)
for communication tasks that arise frequently in parallel linear
algebra computations. In the ScaLAPACK routines, the majority of interprocessor
communication occurs within the PBLAS, so the source code of the top
software layer of ScaLAPACK looks similar to that of LAPACK.
The ScaLAPACK library is written in Fortran (with the exception of
a few symmetric eigenproblem auxiliary routines written in C to exploit
IEEE arithmetic) and in a SPMD style
using explicit message passing for interprocessor communication. The
PBLAS and the BLACS are written in C, but with Fortran interfaces. ScaLAPACK
provides routines for (real and complex) dense and band matrices,
but not sparse matrices.
Documentation
Coding Examples
Example program  Description 
hello.f  Simple BLACS hello world exercise 
pi.f  This is a program that calculates the value of pi using BLACS routines. Using numerical integration combined with parallel processing, this program calculates the value of pi and the time it takes for computation. The user may select the number of processes and points of integration. 
pspblasdriver.f  This is a program that tests several PBLAS routines. It generates 3 random 4by4 matrices (A, B, and C). Then, it tests three PBLAS routine calls (PSNRM2, PSGEMV, and PSGEMM). 
psgesvdriver.f  This is a very simple program that solves a linear system by calling the ScaLAPACK routine PSGESV. More complete details of this example program can be found in Chapter 2 of the ScaLAPACK Users' Guide. This example program demonstrates the basic requirements to call a ScaLAPACK routine: initializing the process grid, assigning the matrix to the processes, calling the ScaLAPACK routine, and releasing the process grid. 
psscaex.f  This is a program that solves a linear system by calling the ScaLAPACK routine PSGESV. In this example, the input matrix is read from a file, distributed to the process grid, and the output is written into a file. 
example1.f  ScaLAPACK matrix generation example 
example2.f  ScaLAPACK matrix generation example 
example3.f  ScaLAPACK matrix generation example 
pddttrdrv.c  C example. Show the use of the ScaLAPACK routines PDDTTRF and PDDTTRS to factor and solve a (diagonally dominant) tridiagonal system of linear equations Tx = b. 
pddttrdrv.f  Fortran example. Show the use of the ScaLAPACK routines PDDTTRF and PDDTTRS to factor and solve a (diagonally dominant) tridiagonal system of linear equations Tx = b. 
pdpttr_2.c  C example. Show the use of the ScaLAPACK routines PDPTTRF and PPPTTRS to factor and solve a symmetric positive definite tridiagonal system of linear equations Tx = b, in two distinct contexts, with two processors each and distinct righthand sides. 
pdpttr_2.f  Fortran example. Show the use of the ScaLAPACK routines PDPTTRF and PPPTTRS to factor and solve a symmetric positive definite tridiagonal system of linear equations Tx = b, in two distinct contexts, with two processors each and distinct righthand sides. 
pzdtt_col_major.c  Shows the use of the ScaLAPACK routines PZDTTRF and PZDTTRS to factor and solve a tridiagonal system of linear equations in nprow distinct contexts, with rowmajor ordering. 
pzdtt_row_major.c  Shows the use of the ScaLAPACK routines PZDTTRF and PZDTTRS to factor and solve a tridiagonal system of linear equations in nprow distinct contexts, with rowmajor ordering. 
Developer Information
ScaLAPACK was developed at the UTK Computer Science Department,
UC Berkeley Computer Science Division,
and at the Computer Science & Mathematics Division of the Oak
Ridge National Laboratory. The principal developers were L.
S. Blackford, J. Choi, A. Cleary, E. D'Azevedo, J. Demmel, I. Dhillon, J.
Dongarra, S. Hammarling, G. Henry, A. Petitet, K. Stanley, D. Walker, and R. C. Whaley.
