The following are major user-noticeable changes across the major
releases of Open MPI. Specifically, these are changes that may
present an incompatibility vs. a prior version of Open MPI, or cause
some other type of user-noticeable change in behavior.
The v4.0.x series introduced the following major changes compared
to the v3.1.x series:
- Legacy MPI-1 symbols that were deprecated in MPI-2.0 in 1996 and
then deleted from the MPI-3.0 specification in 2012 are no longer
mpi.h by default. This will almost
certainly cause some legacy MPI applications to fail to
DO NOT FEAR! It is easy
to fix such issues. See this FAQ category for more
- How to upgrade your application to no longer use these legacy
symbols, and/or what to ask your MPI application provider to do to
update their MPI application.
- How to re-enable these legacy MPI prototypes in Open MPI.
WARNING: These legacy symbols may disappear in a
future major release series of Open MPI!
- The use of InfiniBand with the
openib BTL is now
deprecated; the UCX PML is now
the preferred method of InfiniBand support.
- See this FAQ item for
information on how to build Open MPI with UCX support.
- See this FAQ item for
information on how to run Open MPI jobs with UCX support.
- In the Open MPI v4.0.x series, the
will still be used — by default — for RoCE and iWARP networks
(although UCX works fine with these networks, too). Users can
force the use of UCX for RoCE and iWARP networks, if desired (see
this FAQ item).
- Open MPI v4.0.x is ABI compatible with Open MPI 3.0.x and
Even though Open MPI changed its major version from 3 to 4, it
remains ABI-compatible with the v3.0.x and v3.1.x release series.
Note that other backwards-incompatible changes occurred —
e.g., some MCA parameter names and behaviors changed, some
mpirun command line parameters changed, etc. Hence, Open
MPI 4.0.x is not fully, 100% backwards-compatibile as defined by Open MPI's
version number / backwards compatibility scheme, but it is
ABI compatibile (which is what most users will notice).
- Open MPI now "prefers" external
Open MPI still embeds
source code in its release packages, and will automatically use them
if no suitable version is found when Open MPI is built. However, if a
suitable external version of [hwloc] and/or [libevent] (and their
corresponding development headers) is found on the system during Open
MPI's configuration process, then Open MPI will ignore its embedded
copy and use the system version, instead.