Open MPI logo

FAQ:
General information about the Open MPI Project

  |   Home   |   Support   |   FAQ   |   all just the FAQ
This FAQ is for Open MPI v4.x and earlier.
If you are looking for documentation for Open MPI v5.x and later, please visit docs.open-mpi.org.

Table of contents:

  1. What is MPI? What is Open MPI?
  2. Where can I learn about MPI? Are there tutorials available?
  3. What are the goals of the Open MPI Project?
  4. Will you allow external involvement?
  5. How is this software licensed?
  6. I want to redistribute Open MPI. Can I?
  7. Preventing forking is a goal; how will you enforce that?
  8. How are 3rd party contributions handled?
  9. Is this just YAMPI (yet another MPI implementation)?
  10. But I love [FT-MPI | LA-MPI | LAM/MPI | PACX-MPI]! Why should I use Open MPI?
  11. What will happen to the prior projects?


1. What is MPI? What is Open MPI?

MPI stands for the Message Passing Interface. Written by the MPI Forum (a large committee comprised of a cross-section between industry and research representatives), MPI is a standardized API typically used for parallel and/or distributed computing. The MPI standard has been published multiple times:

  • MPI-1.0 (published in 1994).
  • MPI-2.0 (published in 1996). MPI-2.0 is, for the most part, additions and extensions to the original MPI-1.0 specification.
    • MPI-2.1 and MPI-2.2 were subsequently published, and contain minor fixes, changes, and additions compared to MPI-2.0.
  • MPI-3.0 (published in 2012).
    • MPI-3.1 was subsequently published, and contains minor fixes, changes, and additions compared to MPI-3.0.

All MPI specifications documents can be downloaded from the official MPI Forum web site: http://www.mpi-forum.org/.

Open MPI is an open source, freely available implementation of the MPI specifications. The Open MPI software achieves high performance; the Open MPI project is quite receptive to community input.


2. Where can I learn about MPI? Are there tutorials available?

There are many resources available on the internet for learning MPI.

  • The definitive reference for MPI is the MPI Forum Web site. It has copies of the MPI standards documents and all of the errata. This is not recommended for beginners, but is an invaluable reference.
  • Several books on MPI are available (search your favorite book sellers for availability):
    • MPI: The Complete Reference, Marc Snir et al. (an annotated version of the MPI-1 and MPI-2 standards; a 2 volume set, also known as "The orange book" and "The yellow book")
    • Using MPI, William Gropp et al. (2nd edition, also known as "The purple book")
    • Parallel Programming With MPI, Peter Pacheco
    • ...and others. This is not a definitive list!
  • The "Introduction to MPI" and "Intermediate MPI" tutorials are excellent web-based MPI instruction offered by the NCSA. This is a great place for beginners.
  • Last but not least, searching for "MPI tutorial" on Google turns up a wealth of information (some good, some bad).


3. What are the goals of the Open MPI Project?

We have several top-level goals:

  • Create a free, open source, peer-reviewed, production-quality complete MPI implementation.
  • Provide extremely high, competitive performance (latency, bandwidth, ...pick your favorite metric).
  • Directly involve the HPC community with external development and feedback (vendors, 3rd party researchers, users, etc.).
  • Provide a stable platform for 3rd party research and commercial development.
  • Help prevent the "forking problem" common to other MPI projects.
  • Support a wide variety of HPC platforms and environments.

In short, we want to work with and for the HPC community to make a world-class MPI implementation that can be used on a huge number and kind of systems.


4. Will you allow external involvement?

ABSOLUTELY.

Bringing together smart researchers and developers to work on a common product is not only a good idea, it's the open source model. Merging the multiple MPI implementation teams has worked extremely well for us over the past year — extending this concept to the HPC open source community is the next logical step.

The component architecture that Open MPI is founded upon (see the "Publications" link for papers about this) is designed to foster 3rd party collaboration by enabling independent developers to use Open MPI as a production quality research platform. Although Open MPI is a relatively large code base, it is rarely necessary to learn much more than the interfaces for the component type which you are implementing. Specifically, the component architecture was designed to allow small, discrete implementations of major portions of MPI functionality (e.g., point-to-point messaging, collective communications, run-time environment support, etc.).

We envision at least the following forms of collaboration:

  • Peer review of the Open MPI code base
  • Discussion with Open MPI developers on public mailing lists
  • Direct involvement from HPC software and hardware vendors
  • 3rd parties writing and providing their own Open MPI components


5. How is this software licensed?

The Open MPI code base is licensed under the new BSD license.

That being said, although we are an open source project, we recognize that everyone does not provide free, open source software. Our collaboration models allow (and encourage!) 3rd parties to write and distribute their own components — perhaps with a different license, and perhaps even as closed source. This is all perfectly acceptable (and desirable!).


6. I want to redistribute Open MPI. Can I?

Absolutely.

NOTE: We are not lawyers and this is not legal advice.

Please read the Open MPI license (the BSD license). It contains extremely liberal provisions for redistribution.


7. Preventing forking is a goal; how will you enforce that?

By definition, we can't. If someone really wants to fork the Open MPI code base, they can. By virtue of our extremely liberal license, it is possible for anyone to fork at any time.

However, we hope that no one does.

We intend to distinguish ourselves from other projects by:

  • Working with the HPC community to accept best-in-breed improvements and functionality enhancements.
  • Providing a flexible framework and set of APIs that allow a wide variety of different goals within the same code base through the combinatorial effect of mixing-and-matching different components.

Hence, we hope that no one ever has a reason to fork the main code base. We intend to work with the community to accept the best improvements back into the main code base. And if some developers want to do things to the main code base that are different from the goals of the main Open MPI Project, it is our hope that they can do what they need in components that can be distributed without forking the main Open MPI code base.

Only time will tell if this ambitious plan is feasible, but we're going to work hard to make it a reality!


8. How are 3rd party contributions handled?

Before accepting any code from 3rd parties, we require an original signed contribution agreement from the donator.

These agreements assert that the contributor has the right to donate the code and allow the Open MPI Project to perpetually distribute it under the project's licensing terms.

This prevents a situation where intellectual property gets into the Open MPI code base and then someone later claims that we owe them money for it. Open MPI is a free, open source code base. And we intend it to remain that way.

The Contributing to Open MPI FAQ topic contains more information on this issue.


9. Is this just YAMPI (yet another MPI implementation)?

No!

Open MPI initially represented the merger between three well-known MPI implementations (none of which are being developed any more):

  • FT-MPI from the University of Tennessee
  • LA-MPI from Los Alamos National Laboratory
  • LAM/MPI from Indiana University

with contributions from the PACX-MPI team at the University of Stuttgart.

Each of these MPI implementations excelled in one or more areas. The driving motivation behind Open MPI is to bring the best ideas and technologies from the individual projects and create one world-class open source MPI implementation that excels in all areas.

Open MPI was started with the best of the ideas from these four MPI implementations and ported them to an entirely new code base: Open MPI. This also had the simultaneous effect of enabling us to jettison old, crufty code that was only maintained for historical reasons from each project. We started with a clean slate and decided to "do it Right this time." As such, Open MPI also contains many new designs and methodologies based on (literally) years of MPI implementation experience.

After version 1.0 was released, the Open MPI Project grew to include many other members who have each brought their knowledge, expertise, and resources to Open MPI. Open MPI is now far more than just the best ideas of the founding for MPI implementation projects.


10. But I love [FT-MPI | LA-MPI | LAM/MPI | PACX-MPI]! Why should I use Open MPI?

Here's a few reasons:

  • Open MPI represents the next generation of each of these implementations.
  • Open MPI effectively contains the union of features from each of the previous MPI projects. If you find a feature in one of the prior projects that is not in Open MPI, chances are that it will be soon.
  • The vast majority of our future research and development work will be in Open MPI.
  • All the same developers from your favorite project are working on Open MPI.

Not to worry — each of the respective teams has a vested interest in bringing over the "best" parts of their prior implementation to Open MPI. Indeed, we would love to migrate each of our current user bases to Open MPI as their time, resources, and constraints allow.

In short: we believe that Open MPI — its code, methodology, and open source philosophy — is the future.


11. What will happen to the prior projects?

Only time will tell (we cannot predict the future), but it is likely that each project will eventually either end when funding stops or be used exclusively as a research vehicle. Indeed, some of the projects must continue to exist at least until their existing funding expires.