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:
- What is MPI? What is Open MPI?
- Where can I learn about MPI? Are there tutorials available?
- What are the goals of the Open MPI Project?
- Will you allow external involvement?
- How is this software licensed?
- I want to redistribute Open MPI. Can I?
- Preventing forking is a goal; how will you enforce that?
- How are 3rd party contributions handled?
- Is this just YAMPI (yet another MPI implementation)?
- But I love [FT-MPI | LA-MPI | LAM/MPI | PACX-MPI]!
Why should I use Open MPI?
- 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.
|