Summary
Source: http://www.netlib.org/blacs/
License: Free (not explicitly defined)
Path: /usr/lib64/<mpi-implementation>/lib/
Documentation: http://www.netlib.org/blacs/
Citation: see http://www.netlib.org/blacs/BLACS/Papers.html
The BLACS (Basic Linear Algebra Communication Subprograms) is a package that attempts to provide the same ease of use and portability for distributed memory linear algebra communication that the BLAS provide for linear algebra computation.The concept of concentrating the most used computation into a kernel of highly optimized routines, such as the BLAS, has proven itself in work on LAPACK. LAPACK (Linear Algebra PACKage) provides linear algebra routines for sequential and shared memory machines. There are various packages designed to provide a message passing interface that remains unchanged across multiple platforms, including PICL, PVM and more recently, MPI. These packages are general libraries, however, and thus their interfaces are not as easily usable for linear algebra applications as we would like. The goals of the BLACS project include:
- Ease of programming. Wherever possible, the BLACS will simplify message passing in order to reduce programming errors.
- Ease of use. The interface to the BLACS will be at such a level as to be easily usable by linear algebra programmers.
- Portability. The BLACS must supply an interface which can be supported across a Wide range of parallel computers, including parallel machines built from heterogeneous processors.
This user's guide is supplemented by the BLACS web page. The URL is http://www.netlib.org/blacs/Blacs.html. This on-line document gives detailed examples, as well as providing reference, downloading options, installation instructions, and troubleshooting. If problems still remain after reading this guide and consulting the mosaic page, questions should be mailed to blacs@cs.utk.edu. With distributed memory machines, the basic unit of execution is referred as a process. A process is a thread of execution which minimally includes a stack, registers, and memory. Multiple processes may share a processor. The term processor refers to the actual hardware. In the BLACS, each process is treated as if it were a processor: the process must exist for the lifetime of the BLACS run, and its execution should only affect other processes' execution through the use of message passing calls. The BLACS source code was contributed by many before FOSS licenses were established; there are both free and commercial versions/implementations available.
Using blacs
Currently the blacs libraries are deployed for openmpi and mpich based configurations. To setup the environment for one or the other use the module command:
module load mpi/openmpi-x86_64 # use the openmpi based blacs libraries module load mpi/mpich-x86_64 # use the mpich based blacs libraries