MPI-3 introduced support for non-blocking collective communication functions. Readers unfamiliar with the difference between blocking and non-blocking communication may refer to the Point-to-Point Communication roadmap. Each blocking collective communication routine now has a non-blocking analog, and the conventions followed for the names and function signatures are identical to those followed for point-to-point communication. Thus, a non-blocking call has the same syntax as its blocking counterpart, with two differences:

  1. The letter II (think of "initiate" or "immediate") appears in the name of the call, immediately following the first underscore: e.g., MPI_Ibcast.
  2. The final argument is a handle to an opaque (or hidden) request object that holds detailed information about the transaction. The request handle can be used for subsequent Wait and Test calls.

Most supercomputing environments will include an MPI-3 implementation as the default MPI module. Older or newer versions may be available as optional modules. The module topic of the Stampede2 CVW topic explains how to locate, inspect and load modules on Stampede2. The User Environment CVW topic in the Frontera roadmap offers a similar introduction for the Frontera system.

The exact versions may be different on your system, and if you are not using Linux modules, manual configuration of environment variables may be necessary. Also, note that some MPI installations may depend on specific compilers as well, so the correct compiler module may need to be swapped first.

 
©   Cornell University  |  Center for Advanced Computing  |  Copyright Statement  |  Inclusivity Statement