Introduction
Coding Examples
Documentation
Developer Information
Download
Hands-on


Application Examples


materials


astrophysics


ScaLAPACK

Introduction

ScaLAPACK is a library of high-performance linear algebra routines for distributed-memory message-passing 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 shared-memory 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 well-designed 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 block-partitioned algorithms in order to minimize the frequency of data movement. The fundamental building blocks of the ScaLAPACK library are distributed-memory 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 4-by-4 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 right-hand 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 right-hand 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 row-major 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 row-major 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.

Tools News Home