Parallel Sparse Basic
Linear Algebra SubroutinesGrand challenges and most of the actual applications that do require a parallel solution are characterized by an irregular and sparse domain of computation. The complexity of their implementation on parallel machines is one of the main reasons of the still limited diffusion of these architectures. Parallel Sparse BLAS (PSBLAS) is a library of Basic Linear Algebra Subroutines for parallel sparse applications that facilitates the porting of complex computations on multicomputers. The project has been prompted by the appearance of a proposal for serial sparse BLAS that are flexible and powerful enough to be used as the building blocks of more complex applications, especially on parallel machines. The PSBLAS library includes routines for multiplying sparse matrices by dense matrices, solving sparse triangular systems, preprocessing sparse matrices and additional routines for dense matrix operations. The PSBLAS interface aims at the maximal flexibility with respect to the data distribution strategy. PSBLAS supports totally arbitrary data distributions under the control of the user. Moreover, it has also some predefined distributions that are popular choices for ScaLAPACK and HPF users. The PSBLAS library is internally implemented in Fortran 95 with some additions of Fortran 77 and C. The interface is in Fortran 95. This choice for the interface should be at the right level of abstraction for the target applications of PSBLAS, and allows the use of advanced features, such as operator overloading and derived data type definition in the presentation. Moreover, the Fortran 95 facilities for dynamic memory management greatly enhance the usability of the PSBLAS subroutines. In this way, the library can take care of runtime memory requirements that can be quite difficult or even impossible to predict at implementation or compilation time. Sparse iterative solvers are employed in many software systems covering a broad area of applications, such as the simulation of internal combustion engines, oil reservoirs, semiconductor devices, structural analysis, electromagnetic scattering. Users interested in complex simulations requiring a very large number of degrees of freedom should find PSBLAS quite attractive. Our own experience has been mainly in applying the PSBLAS solvers to computational fluid dynamics applications. As a typical case, a complete simulation of an automobile engine can easily scale up to a few millions of variables.
One of the main design and implementation goals was to provide a flexible framework and library that could easily sustain further developments.
Current version
This is release 3.0-2, the Fortran 2003 version.
The PSBLAS library has been tested on many Linux clusters with a variety of compilers, and on the IBM SP with XLC and XLF compilers; see the README file for further details. Our reference compiler is currently GNU Fortran compiler 4.7.
The sister package MLD2P4 is also moving towards its 2.0 release; experimental versions at the MLD2P4 web site.
Users of MLD2P4 1.2.1 can use either version 2.4.0 or 2.3.4; when upgrading from 2.3 to 2.4 they should do a make clean in the main MLD directory and rerun the configure script.
Users of MLD2P4 1.2 will need to apply the following patch: mld2p4-1.2-p1.tgz; do a make clean in the main MLD source directory, unpack there this file, reconfigure to point to the new version of PSBLAS, and recompile. No changes are needed in application source code.
The tar files do not include the BLAS and METIS libraries, which can be obtained from their respective URLs. For the BLAS, if you do not have a vendor version, consider using ATLAS
New: NVIDIA GPU support
We now support computations on GPU cards from NVIDIA. This is the first beta release; please send us feedback. See inside for prerequisites.
Older versions
The 2.4.0 version eliminates the dependency on the BLACS. The "-4" update fixes some minor bugs (build problems and a bug only surfacing with certain runtime check options).
The 2.3.4 version and subsequent contains the support routines for MLD2P4 1.1.
The 2.3 version contains the support routines for MLD2P4 1.0.
Experimental versions