MPICH2 Release InformationΒΆ

The following is reproduced essentially verbatim from files contained within the MPICH2 tarball downloaded from

NOTE: MPICH-2 has been effectively deprecated by the Open Source Community in favor of MPICH-3, which Scyld ClusterWare distributes as a set of mpich-scyld RPMs. Scyld ClusterWare continues to distribute mpich2-scyld, although we encourage users to migrate to MPICH-3, which enjoys active support by the Community.

                               Changes in 1.5

 # OVERALL: Nemesis now supports an "--enable-yield=..." configure
   option for better performance/behavior when oversubscribing
   processes to cores.  Some form of this option is enabled by default
   on Linux, Darwin, and systems that support sched_yield().

 # OVERALL: Added support for Intel Many Integrated Core (MIC)
   architecture: shared memory, TCP/IP, and SCIF based communication.

 # OVERALL: Added support for IBM BG/Q architecture.  Thanks to IBM
   for the contribution.

 # MPI-3: const support has been added to mpi.h, although it is
   disabled by default.  It can be enabled on a per-translation unit
   basis with "#define MPICH2_CONST const".

 # MPI-3: Added support for MPIX_Type_create_hindexed_block.

 # MPI-3: The new MPI-3 nonblocking collective functions are now
   available as "MPIX_" functions (e.g., "MPIX_Ibcast").

 # MPI-3: The new MPI-3 neighborhood collective routines are now available as
   "MPIX_" functions (e.g., "MPIX_Neighbor_allgather").

 # MPI-3: The new MPI-3 MPI_Comm_split_type function is now available
   as an "MPIX_" function.

 # MPI-3: The new MPI-3 tools interface is now available as "MPIX_T_"
   functions.  This is a beta implementation right now with several
   limitations, including no support for multithreading.  Several
   performance variables related to CH3's message matching are exposed
   through this interface.

 # MPI-3: The new MPI-3 matched probe functionality is supported via
   the new routines MPIX_Mprobe, MPIX_Improbe, MPIX_Mrecv, and

 # MPI-3: The new MPI-3 nonblocking communicator duplication routine,
   MPIX_Comm_idup, is now supported.  It will only work for
   single-threaded programs at this time.

 # MPI-3: MPIX_Comm_reenable_anysource support

 # MPI-3: Native MPIX_Comm_create_group support (updated version of
   the prior MPIX_Group_comm_create routine).

 # MPI-3: MPI_Intercomm_create's internal communication no longer interferes
   with point-to-point communication, even if point-to-point operations on the
   parent communicator use the same tag or MPI_ANY_TAG.

 # MPI-3: Eliminated the possibility of interference between
   MPI_Intercomm_create and point-to-point messaging operations.

 # Build system: Completely revamped build system to rely fully on
   autotools.  Parallel builds ("make -j8" and similar) are now supported.

 # Build system: rename "./maint/updatefiles" --> "./" and
   "" --> ""

 # JUMPSHOT: Improvements to Jumpshot to handle thousands of
   timelines, including performance improvements to slog2 in such

 # JUMPSHOT: Added navigation support to locate chosen drawable's ends
   when viewport has been scrolled far from the drawable.

 # PM/PMI: Added support for memory binding policies.

 # PM/PMI: Various improvements to the process binding support in
   Hydra.  Several new pre-defined binding options are provided.

 # PM/PMI: Upgraded to hwloc-1.5

 # PM/PMI: Several improvements to PBS support to natively use the PBS

 # Several other minor bug fixes, memory leak fixes, and code cleanup.
   A full list of changes is available using:

     svn log -r8478:HEAD

     ... or at the following link:

                               Changes in 1.4.1

 # OVERALL: Several improvements to the ARMCI API implementation
   within MPICH2.

 # Build system: Added beta support for DESTDIR while installing

 # PM/PMI: Upgrade hwloc to 1.2.1rc2.

 # PM/PMI: Initial support for the PBS launcher.

 # Several other minor bug fixes, memory leak fixes, and code cleanup.
   A full list of changes is available using:

   svn log -r8675:HEAD \

     ... or at the following link:

                               Changes in 1.4

 # OVERALL: Improvements to fault tolerance for collective
   operations. Thanks to Rui Wang @ ICT for reporting several of these

 # OVERALL: Improvements to the universe size detection. Thanks to
   Yauheni Zelenko for reporting this issue.

 # OVERALL: Bug fixes for Fortran attributes on some systems. Thanks
   to Nicolai Stange for reporting this issue.

 # OVERALL: Added new ARMCI API implementation (experimental).

 # OVERALL: Added new MPIX_Group_comm_create function to allow
   non-collective creation of sub-communicators.

 # FORTRAN: Bug fixes in the MPI_DIST_GRAPH_ Fortran bindings.

 # PM/PMI: Support for a manual "none" launcher in Hydra to allow for
   higher-level tools to be built on top of Hydra. Thanks to Justin
   Wozniak for reporting this issue, for providing several patches for
   the fix, and testing it.

 # PM/PMI: Bug fixes in Hydra to handle non-uniform layouts of hosts
   better. Thanks to the MVAPICH group at OSU for reporting this issue
   and testing it.

 # PM/PMI: Bug fixes in Hydra to handle cases where only a subset of
   the available launchers or resource managers are compiled
   in. Thanks to Satish Balay @ Argonne for reporting this issue.

 # PM/PMI: Support for a different username to be provided for each
   host; this only works for launchers that support this (such as

 # PM/PMI: Bug fixes for using Hydra on AIX machines. Thanks to
   Kitrick Sheets @ NCSA for reporting this issue and providing the
   first draft of the patch.

 # PM/PMI: Bug fixes in memory allocation/management for environment
   variables that was showing up on older platforms. Thanks to Steven
   Sutphen for reporting the issue and providing detailed analysis to
   track down the bug.

 # PM/PMI: Added support for providing a configuration file to pick
   the default options for Hydra. Thanks to Saurabh T. for reporting
   the issues with the current implementation and working with us to
   improve this option.

 # PM/PMI: Improvements to the error code returned by Hydra.

 # PM/PMI: Bug fixes for handling "=" in environment variable values in

 # PM/PMI: Upgrade the hwloc version to 1.2.

 # COLLECTIVES: Performance and memory usage improvements for MPI_Bcast
   in certain cases.

 # VALGRIND: Fix incorrect Valgrind client request usage when MPICH2 is
   built for memory debugging.

 # BUILD SYSTEM: "--enable-fast" and "--disable-error-checking" are once
   again valid simultaneous options to configure.

 # TEST SUITE: Several new tests for MPI RMA operations.

 # Several other minor bug fixes, memory leak fixes, and code cleanup.
   A full list of changes is available using:

   svn log -r7838:HEAD \

   ... or at the following link:

            KNOWN ISSUES

### Known runtime failures

 * MPI_Alltoall might fail in some cases because of the newly added
   fault-tolerance features. If you are seeing this error, try setting
   the environment variable MPICH_ENABLE_COLL_FT_RET=0.

### Threads

 * ch3:sock does not (and will not) support fine-grained threading.

 * MPI-IO APIs are not currently thread-safe when using fine-grained
   threading (--enable-thread-cs=per-object).

 * ch3:nemesis:tcp fine-grained threading is still experimental and may
   have correctness or performance issues.  Known correctness issues
   include dynamic process support and generalized request support.

### Lacking channel-specific features

 * ch3 does not presently support communication across heterogeneous
   platforms (e.g., a big-endian machine communicating with a
   little-endian machine).

 * ch3:nemesis:mx does not support dynamic processes at this time.

 * Support for "external32" data representation is incomplete. This
   affects the MPI_Pack_external and MPI_Unpack_external routines, as
   well the external data representation capabilities of ROMIO.

 * ch3 has known problems in some cases when threading and dynamic
   processes are used together on communicators of size greater than

### Build Platforms

 * Builds using the native "make" program on OpenSolaris fail unknown
   reasons.  A workaround is to use GNU Make instead.  See the following
   ticket for more information:

 * Build fails with Intel compiler suite 13.0, because of weak symbol
   issues in the compiler.  A workaround is to disable weak symbol
   support by passing --disable-weak-symbols to configure.  See the
   following ticket for more information:

 * The sctp channel is fully supported for FreeBSD and Mac OS X. As of
   the time of this release, bugs in the stack currently existed in
   the Linux kernel, and will hopefully soon be resolved. It is known
   to not work under Solaris and Windows. For Solaris, the SCTP API
   available in the kernel of standard Solaris 10 is a subset of the
   standard API used by the sctp channel. Cooperation with the Sun
   SCTP developers to support ch3:sctp under Solaris for future
   releases is currently ongoing. For Windows, no known kernel-based
   SCTP stack for Windows currently exists.

### Process Managers

 * The MPD process manager can only handle relatively small amounts of
   data on stdin and may also have problems if there is data on stdin
   that is not consumed by the program.

 * The SMPD process manager does not work reliably with threaded MPI
   processes. MPI_Comm_spawn() does not currently work for >= 256
   arguments with smpd.

### Performance issues

 * SMP-aware collectives do not perform as well, in select cases, as
   non-SMP-aware collectives, e.g. MPI_Reduce with message sizes
   larger than 64KiB. These can be disabled by the configure option

 * MPI_Irecv operations that are not explicitly completed before
   MPI_Finalize is called may fail to complete before MPI_Finalize
   returns, and thus never complete. Furthermore, any matching send
   operations may erroneously fail. By explicitly completed, we mean
   that the request associated with the operation is completed by one
   of the MPI_Test or MPI_Wait routines.

### C++ Binding:

 * The MPI datatypes corresponding to Fortran datatypes are not
   available (e.g., no MPI::DOUBLE_PRECISION).

 * The C++ binding does not implement a separate profiling interface,
   as allowed by the MPI-2 Standard (Section 10.1.10 Profiling).

 * MPI::ERRORS_RETURN may still throw exceptions in the event of an
   error rather than silently returning.