Papers of Applications Using MPI

Parallel Libraries Using MPI

  • The PETSc Scientific Computing Libraries Numerical software libraries for the parallel solution of sparse linear systems, nonlinear equations arising from the discretization of PDEs, unconstrained minimization, etc.
  • The MPE libraries in the (ANL/MSU MPI implementation ) contain MPI libraries for profiling and program visualization, X11 graphics, and sequential sections.
  • mpptest is a program for measuring the performance of an MPI implementation.
  • ScaLAPACK, version 1.2, includes routines for the solution of linear systems of equations, symmetric positive definite banded linear systems of equations, condition estimation and iterative refinement, for LU and Cholesky factorization, matrix inversion, full-rank linear least squares problems, orthogonal and generalized orthogonal factorizations, orthogonal transformation routines, reductions to upper Hessenberg, bidiagonal and tridiagonal form, reduction of a symmetric-definite generalized eigenproblem to standard form, the symmetric, generalized symmetric and the nonsymmetric eigenproblem.
  • The HDF5 I/O library ( supports parallel file access in a message passing environment through the use MPI and MPI-IO. HDF5 is widely used by scientific applications for data storage, particularly for very large, complex datasets and in high performance computing environments. Parallel HDF5 has Fortran and C language interfaces.
  • Cluster Graphics ibrary (Under development)
  • Parallel Linear Algebra Package (PLAPACK) is designed to provide a user friendly infrastructure for building parallel dense linear algebra libraries.
  • A Fortran 90 module with enhanced type-checking has been developed by Jim McElwaine. Updated 1/8/98 and tested on SR2201 and LINUX.
  • A Fortran 90 module that provides enhanced Fortran support for all MPI1.1 procedures is available. This includes explicit generic interfaces as well as optional arguments. The template based source code, makefiles for different architectures (Linux/ IBM RS6000/ DEC Alpha + MPICH, SGI O2k, Cray T3E) and documentation are freely available at
  • The Message-passing tools for Structured Grid communications (MSG) are intended to simplify coding of data exchange within FORTRAN 77 codes performing data transfers on distributed Cartesian grids. The idea of having this library came from the necessity to provide means of parallelization to programmers involved in the developement of meteorological models. The focus was mainly on performance. The MSG functionality is somewhat similar to this of your `distributed array' management tools in PETSc. The URL of the MSG toolkit is http://www.CERCA.UMontreal.CA/~malevsky/MSG/MSG.html
  • There is a collection of example programs from the book Using MPI.
  • The MPIX Library has been developed at the Mississippi State University NSF Engineering Research Center and currently contains a set of extensions to MPI that allow many functions that previously only worked with intracommunicators to work with intercommunicators. Extensions include enhanced support for intercommunicator:
  • This is an object-oriented library implemented using MPI described in "PPI++: An Object-oriented parallel portability interface in C++", technical report CE-STR-94-19, Purdue University, by Shang-Hsien Hsieh and Elisa D. Sotelino.
  • MPI Cubix, a collective I/O library for POSIX and MPI. Produced by the LAM Project at Ohio Supercomputer Center.
  • A parallel print function that merges output has been developed. PTCPrint was developed at Lawrence Livermore National Laboratory as a project of the Parallel Tools Consortium. It is freely available and has been tested successfully on IBM, Meiko, DEC, and SGI parallel systems. For information and downloading, go to .
  • LMPI: A Profiling library for MPI programs provides post-mortem analysis of MPI programs.
  • An MPI version of a parallel version of the level 3 BLAS (Basic Linear Algebra Subroutines) from Almadena Chtchelkanova, John Gunnels, Greg Morrow, James Overfelt, and Robert A. van de Geijn
  • A beta version of GCL/MPI is now available by anonymous ftp. This is a free software package built on top of MPI and GCL LISP, to easily write parallel programs on networks of workstations. GCL/MPI is intended as an easy-to-use master-slave distributed architecture. It combines the feedback of an interactive language (the GCL or AKCL dialect of LISP) with the the use of MPI (Message Passing Interface) to take advantage of networks of workstations. As such, it is hoped that it will make available an SPMD architecture that helps people overcome the initial learning barrier in writing parallel programs. Ease-of-use is emphasized while hoping to maintain reasonable efficiency and a reasonable feature set. This distribution, along with a paper describing it is available by anonymous ftp in the directory /pub/people/gene/starmpi at . The current implementation is based on MPI and GCL or AKCL, but it should be easily portable to other message passing libraries (such as PVM) and other dialects of Common LISP with a foreign function interface capable of loading object (.o) files and library archive (.a) files. This version is still experimental. Comments are gratefully accepted. Thanks to Gene Cooperman .
  • The Aztec library is a parallel iterative package for the solving linear systems arising in Newton-Krylov Methods. Aztec is publicly available through a research license. The code is distributed along with technical documentation, example C and Fortran driver routines and sample input files via the internet.
  • The Open Systems Laboratory at Indiana University is pleased to announce the release of Object Oriented MPI (OOMPI) version 1.0.4. This release provides up-to-date support for newer MPI implementations and some minor bug fixes.

    OOMPI is an object-oriented interface to the MPI message passing library standard. It is used at a much higher level than the standard MPI C++ bindings, providing a full class library that takes advantage of many C++/object oriented abstractions for message passing. OOMPI is a thin layer that runs over any compliant MPI C implementation. While providing the programmer significant object-oriented abstractions, OOMPI causes literally negligible overhead.

    The OOMPI software may be obtained from the main OOMPI web site:

    Send any questions, comments, and suggestions to:

    [email protected][email protected]

  • I have written a (minimal) F90 interface to be used on top of an existing "F77" MPI implementation, which is currently tested on our IBM RS/6000 SP system with IBM's POE/MPI 2.1. It may be of interest for this list, too. A "design" article and source files are available at Documentation and Software Comments and bug reports are appreciated...
  • Domain decomposition On Unstructured Grids DOUG is a black box parallel iterative solver for finite element systems arising from elliptic partial differential equations. Used in conjunction with a finite element discretisation code, DOUG will solve the resulting linear systems using an iterative method and provides a range of powerful domain decomposition preconditioners. The code is designed to run effectively in parallel on virtually any machine that supports MPI. The matrix-vector operations arising in the iterative method are parallelised using graph partitioning software and additive Schwarz preconditioners can be automatically constructed by DOUG using only minimal input. In this first release a full additive Schwarz preconditioner with automatically generated coarse grid is provided in 2D only. A version without the coarse grid is available in 3D.
  • METIS and ParMETIS are serial and parallel software packages for partitioning unstructured Graphs and for computing fill-reducing orderings of sparse matrices.
  • PSPASES is a stand-alone MPI-based parallel library for solving linear systems of equations involving sparse symmetric positive definite matrices. The library efficiently implements the scalable parallel algorithms developed by authors, for each of the four phases of direct solution method; viz. ordering, symbolic factorization, numerical Cholesky factorization, and solution of triangular systems.

    PSPASES is highly scalable, mainly because it uses a highly scalable parallel multifrontal algorithm in the most expensive computational phase of numerical factorization. All the other phases are also scalable by themselves.

    PSPASES is implemented using standard MPI and BLAS, which makes it portable to most of today's parallel computers and networks of workstations. We have tested PSPASES extensively on IBM SP, network of IBM RS6000 workstations, Cray T3E, SGI Origin 2000 and PowerChallenge architectures.

    PSPASES uses ParMETIS and METIS as default libraries for computing fill- reducing ordering, but it also accepts user supplied ordering. Different functional interfaces are provided for each of the phases of the solver and a simple interface is also provided for easy use. The user can use these interfaces to solve multiple systems with same nonzero structures; to solve same system for multiple right hand sides; and to get different statistical information such as the memory requirements of the solver and the quality of the ordering.

  • FFTW, a portable C FFT library now includes parallel, in-place, multi-dimensional FFT routines using MPI. Free for non-commercial use.
  • TCGMSG-MPI is an MPI implemenation of the TCGMSG library.
  • MPI data-type tools
  • MP_SOLVE is used to solve sparse, irregular systems of equations with multiple right-hand sides on distributed memory, multiprocessor computers having the MPI communications library.
  • Prometheus is a fully parallel multigrid-based linear system solver for unstructured 3D Finite Element problems. Prometheus takes a FE mesh distributed across multiple processors, automatically generates all the coarse representations and operators for standard multigrid algorithms, and solves the linear system.
  • S+: Fast Sparse Gaussian Elimination
  • Cactus Computational Toolkit The Cactus Toolkit provides a modular, portable, and manageable environment for collaboratively developing high-performance multidimensional numerical simulations. It allows one, with only a working knowledge of Fortran or C, to plug application specific computational modules into the framework.
  • MpCCI is an MPI-based library that may be used to connect application codes together. MpCCI provides tools for transfering data between different mesh representations.
  • PARASOL is an integrated environment for the solution of sparse linear systems. PARASOL is written in Fortran 90 and uses MPI 1.1 for communication.
  • Scalable Modeling System is designed to simplify the parallelization of structured grid codes.
  • POOMA is an object-oriented framework for applications in computational science requiring high-performance parallel computers. It is a library of C++ classes designed to represent common abstractions in these applications. The major new feature added to 2.3 is support for a message-passing model of parallelism. Applications written using POOMA 2.3 will be able to run on clusters of computers that support MPI. POOMA 2.3 continues to support the multi-threaded model introduced in version 2.0. The combined model where multiple threads run on a shared-memory multiprocessor and communicate with other multiprocessors through message-passing will be supported in version 2.4.
  • Matrix Distributed Processing is a collection of Object Oriented tools (classes and functions written in C++ and based on Message Passing Interface) for generic lattice simulations. Created by Massimo Di Pierro.
  • FermiQCD is a complete Lattice QCD application developed on top of MDP version 1.2.
  • The Watson Sparse Matrix Package contains parallel solvers that make use of MPI.
  • PALM: a Universal Software for Data Assimilation
  • RIST (Research Organization for Information Science & Technology, Japan) has released the BGeoFEM ver.4.0, a parallel finite element platform.

    GeoFEM is delveloped as the part of the Japanese national project, Parallel Platform for Large Scale Solid Earth Simulation" project funded by "Special Promoting Funds of Science & Technology" of the Ministry of Education, Science and Technology, Japan which has been conduced since 1998.

    GeoFEM includes parallel finite element codes for linear/nonlinear solid mechanics and thermal fluid simulations, parallel iterative linear solver library, partitioning subsystem, parallel visualization subsystem and utilities for parallel I/O and coupling of multiple codes. GeoFEM is originally developed for solid earth simulation but applicable for various types of engineering and science applications. Users also plug-in their own FEM codes to GeoFEM platform and can develop parallel FEM code easily.

    GeoFEM is written in Fortran 90 and MPI (part of visualization/utility subsystems in C and C++) and can work on various types of platforms from LINUX clusters to massively parallel computers.

    Researchers and engineers interested in GeoFEM can get information at
    Source files of the entire codes, example input/output files and documents can be downloaded from this website. New features in ver.4.0 are as follows :

    1. 3D steady/transient thermal conduction subsystem available
    2. Robust block ILU(1)/ILU(2) preconditioners available in linear solver subsystem
    3. Compressed input/output file can be handled in parallel I/O utility
    More detailed update information can be found at
  • Commercial Libraries

    There are also a growing number of commercial libraries that use MPI. A list of the ones that we know about follows.
  • IBM's Parallel ESSL uses MPI and is available for the IBM SP.
  • MPI Applications

    Complete applications that use MPI are also becoming available. The following is a sampling (mostly collected from announcements on comp.parallel.mpi). If you would like to be added to this list, send mail to [email protected].
  • MPB is a free program to compute electromagnetic eigenmodes and dispersion relations of arbitrary dielectric structures.
  • QCDMPI Pure QCD Monte Carlo simulation code with MPI. A complete Quantum Chromo Dymamics on the Lattice (=Lattice QCD) application.
  • The Parma2 project has an MPI version of POV-ray
  • CTSim, an open source Computed Tomography Simulator.
  • MPI PovRAY, a parallel raytracing program.
  • A summary of a recent research project into Ocean turbulence using MPI. The main code simulates turbulent flow by solving the Navier-Stokes equations. It was developed by Kraig Winters of the University of Washington's Applied Physics Laboratory. Continued research into ocean turbulence will use this and other MPI-based codes.