A high-performance, portable implementation of the MPI message passing interface standard

William Gropp, Ewing Lusk, Nathan Doss, Anthony Skjellum

Research output: Contribution to journalArticlepeer-review

Abstract

MPI (Message Passing Interface) is a specification for a standard library for message passing that was defined by the MPI Forum, a broadly based group of parallel computer vendors, library writers, and applications specialists. Multiple implementations of MPI have been developed. In this paper, we describe MPICH, unique among existing implementations in its design goal of combining portability with high performance. We document its portability and performance and describe the architecture by which these features are simultaneously achieved. We also discuss the set of tools that accompany the free distribution of MPICH, which constitute the beginnings of a portable parallel programming environment. A project of this scope inevitably imparts lessons about parallel computing, the specification being followed, the current hardware and software environment for parallel computing, and project management; we describe those we have learned. Finally, we discuss future developments for MPICH, including those necessary to accommodate extensions to the MPI Standard now being contemplated by the MPI Forum.

Original languageEnglish (US)
Pages (from-to)789-828
Number of pages40
JournalParallel Computing
Volume22
Issue number6
DOIs
StatePublished - Sep 1996
Externally publishedYes

Keywords

  • Benchmark
  • MPI-2
  • Message passing interface
  • Parallel programming environment
  • Performance
  • Portability

ASJC Scopus subject areas

  • Software
  • Theoretical Computer Science
  • Hardware and Architecture
  • Computer Networks and Communications
  • Computer Graphics and Computer-Aided Design
  • Artificial Intelligence

Fingerprint

Dive into the research topics of 'A high-performance, portable implementation of the MPI message passing interface standard'. Together they form a unique fingerprint.

Cite this