HP-MPI Version 2.3.1 for Linux Release Note
Table Of Contents
- HP-MPI V2.3.1 for Linux Release Note
- Table of Contents
- 1 Information About This Release
- 2 New or Changed Features in V2.3.1
- 3 New or Changed Features in V2.3
- 3.1 Options Supported Only on HP Hardware
- 3.2 System Check
- 3.3 Default Message Size Changed For -ndd
- 3.4 MPICH2 Compatibility
- 3.5 Support for Large Messages
- 3.6 Redundant License Servers
- 3.7 License Release/Regain on Suspend/Resume
- 3.8 Expanded Functionality for -ha
- 3.8.1 Support for High Availability on InfiniBand Verbs
- 3.8.2 Highly Available Infrastructure (-ha:infra)
- 3.8.3 Using MPI_Comm_connect and MPI_Comm_accept
- 3.8.4 Using MPI_Comm_disconnect
- 3.8.5 Instrumentation and High Availability Mode
- 3.8.6 Failure Recover (-ha:recover)
- 3.8.7 Network High Availability (-ha:net)
- 3.8.8 Failure Detection (-ha:detect)
- 3.8.9 Clarification of the Functionality of Completion Routines in High Availability Mode
- 3.9 Enhanced InfiniBand Support for Dynamic Processes
- 3.10 Singleton Launching
- 3.11 Using the -stdio=files Option
- 3.12 Using the -stdio=none Option
- 3.13 Expanded Lightweight Instrumentation
- 3.14 The api option to MPI_INSTR
- 3.15 New mpirun option -xrc
- 4 Known Issues and Workarounds
- 4.1 Running on iWarp Hardware
- 4.2 Running with Chelsio uDAPL
- 4.3 Mapping Ranks to a CPU
- 4.4 OFED Firmware
- 4.5 Spawn on Remote Nodes
- 4.6 Default Interconnect for -ha Option
- 4.7 Linking Without Compiler Wrappers
- 4.8 Locating the Instrumentation Output File
- 4.9 Using the ScaLAPACK Library
- 4.10 Increasing Shared Memory Segment Size
- 4.11 Using MPI_FLUSH_FCACHE
- 4.12 Using MPI_REMSH
- 4.13 Increasing Pinned Memory
- 4.14 Disabling Fork Safety
- 4.15 Using Fork with OFED
- 4.16 Memory Pinning with OFED 1.2
- 4.17 Upgrading to OFED 1.2
- 4.18 Increasing the nofile Limit
- 4.19 Using appfiles on HP XC Quadrics
- 4.20 Using MPI_Bcast on Quadrics
- 4.21 MPI_Issend Call Limitation on Myrinet MX
- 4.22 Terminating Shells
- 4.23 Disabling Interval Timer Conflicts
- 4.24 libpthread Dependency
- 4.25 Fortran Calls Wrappers
- 4.26 Bindings for C++ and Fortran 90
- 4.27 Using HP Caliper
- 4.28 Using -tv
- 4.29 Extended Collectives with Lightweight Instrumentation
- 4.30 Using -ha with Diagnostic Library
- 4.31 Using MPICH with Diagnostic Library
- 4.32 Using -ha with MPICH
- 4.33 Using MPI-2 with Diagnostic Library
- 4.34 Quadrics Memory Leak
- 5 Installation Information
- 6 Licensing Information
- 7 Additional Product Information
than the largest communicator the rank can join, it returns MPI_COMM_NULL. However,
extensive communication failures, such as a failed switch, can make such knowledge
unattainable to a rank and result in splitting the communicator.
If the communicator returned by rank A contains rank B, then either the communicator
return by ranks A and B will be identical or rank B will return MPI_COMM_NULL and
any attempt by rank A to communicate with rank B immediately returns
MPI_ERR_EXITED. Therefore, any legal use of communicator return by
MPI_Comm_dup() should not result in a deadlock. Members of the resulting
communicator either agree to membership or are unreachable to all members. Any
attempt to communicate with unreachable members results in a failure.
Interruptible Collectives
When a failure (host, process, or interconnect) that affects a collective operation occurs,
at least one rank calling the collective returns with an error. The application must
initiate a recovery from those ranks by calling MPI_Comm_dup() on the communicator
used by the failed collective. This ensures that all other ranks within the collective also
exit the collective. Some ranks might exit successfully from a collective call while other
ranks do not. Ranks which exit with MPI_SUCCESS will have successfully completed
their role in the operation, and any output buffers will be correctly set. The return value
of MPI_SUCCESS does not indicate that all ranks have successfully completed their
role in the operation.
After a failure, one or more ranks must call MPI_Comm_dup(). All future
communication on that communicator results in failure for all ranks until each rank
has called MPI_Comm_dup() on the communicator. After all ranks have called
MPI_Comm_dup(), the parent communicator can be used for point-to-point
communication. MPI_Comm_dup() can be called successfully even after a failure.
Because the results of a collective call can vary by rank, ensure that an application is
written to avoid deadlocks. For example, using multiple communicators can be very
difficult as the following code demonstrates:
...
err = MPI_Bcast(buffer, len, type, root, commA);
if (err) {
MPI_Error_class(err, &class);
if (class == MPI_ERR_EXITED) {
err = MPI_Comm_dup(commA, &new_commA);
if (err != MPI_SUCCESS) {
cleanup_and_exit();
}
MPI_Comm_free(commA);
commA = new_commA;
}
}
err = MPI_Sendrecv_replace(buffer2, len2, type2, src, tag1, dest, tag2, commB, &status);
if (err) {
....
...
In this case, some ranks exit successfully from the MPI_Bcast() and move onto the
MPI_Sendrecv_replace() operation on a different communicator. The ranks that
call MPI_Comm_dup() only cause operations on commA to fail. Some ranks cannot
20 New or Changed Features in V2.3