The BLACS (Basic Linear Algebra Communication Subprograms) [50, 54] are a message-passing library designed for linear algebra. The computational model consists of a one- or two-dimensional process grid, where each process stores pieces of the matrices and vectors. The BLACS include synchronous send/receive routines to communicate a matrix or submatrix from one process to another, to broadcast submatrices to many processes, or to compute global reductions (sums, maxima and minima). There are also routines to construct, change, or query the process grid. Since several ScaLAPACK algorithms require broadcasts or reductions among different subsets of processes, the BLACS permit a process to be a member of several overlapping or disjoint process grids, each one labeled by a context. Some message-passing systems, such as MPI [64, 110], also include this context concept; MPI calls this a communicator . The BLACS provide facilities for safe inter-operation of system contexts and BLACS contexts. Further details of the BLACS can be found in [54]. An important aim of the BLACS is to provide a portable, linear algebra specific layer for communication.