Table of contents:
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:
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.
There are many resources available on the internet for learning MPI.
We have several top-level goals:
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.
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:
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!).
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.
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:
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!
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.
No!
Open MPI initially represented the merger between three well-known MPI implementations (none of which are being developed any more):
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.
Here's a few reasons:
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.
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.