Most computationally intensive applications work on irregular and sparse domains that complicate their implementation on parallel machines. The major goal of the Parallel Sparse Basic Linear Algebra Subroutines (PSBLAS) project is to provide a framework to enable easy, efficient and portable implementations of iterative solvers for linear systems, while shielding the user from most details of their parallelization. The interface is designed keeping in view a Single Program Multiple Data programming model on distributed memory machines.


Grand 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 current version of the PSBLAS library is implemented in Fortran 2003. The object-oriented features of the language enable a very convenient level of abstraction for the target applications of PSBLAS. 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.

Selected Publications

PSBLAS Software

Current version

Version 3.4.0 prepares for the upcoming mld2p4 version 2.1; users of mld2p4 2.0 should use version 3.3.4 below, since there are some API incompatibilities.

Version 3.3.4-3 contains fixes for muyltiple bugs exposed by mld2p4-2.0.

Version 3.3.3-1 contains a bug fix necessary for some of the preconditioners of mld2p4-2.0.

Version 3.3.3 contains bug fixes necessary for some of the preconditioners of mld2p4-2.0.

Version 3.3.2 contains some minor improvements to format conversion and usage of COO stuff. And a bug fix in 3.3.2-1.

Version 3.3.1 contains some minor bug fixes

Version 3.3.0 introduces some internal changes to better support GPU plugins. It is essentially transparent to user code, but requires recompilation.

Version 3.2.0 introduces certain changes and optimizations in the internals. It is essentially transparent to user code.

Version 3.1.2 contains some changes to the installation procedures, but nothing that should require rewriting user code.

Version 3.1.1 contains some performance improvements, and (again, sorry) some method changes that do not require rewriting user code, but do require recompilation.

With version 3.1 we have made a few internal changes that are transparent to the end user, but require recompilation of any application program.

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: Extended formats and NVIDIA GPU support

We provide extended storage formats. In this context we also support computations on GPU cards from NVIDIA; all feedback welcome. Prerequisites include SPGPU. Contributors include Davide Barbieri and Valeria Cardellini.

Support for the development of the GPU-enabled version has been provided by CASPUR, now CINECA.

New: Approximate Inverse preconditioners

This is a highly experimental plugin for the MLD2P4-2 software, providing support for approximate inverse preconditioners; please send us feedback. See inside for prerequisites.

Older versions

PSBLAS Documentation

  • PSBLAS User Guide (PDF) (version 3.2):   [.pdf]

  • PSBLAS User Guide (Online)
  • README file (version 3.2):   README
  • LICENSE file (version 3.0):   LICENSE
  • PSBLAS Extensions/GPU User Guide (PDF) (version 1.0):   [.pdf]
      For any problem contact:

    PSBLAS 3.0 Team

    PSBLAS 2.0 Team

    PSBLAS 1.0 Team
    This home page was last modified: July 17th, 2015.
    For comments, you are welcome to send email to: Salvatore Filippone