Non-blocking CC Routines
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:
-
The letter
I(think of "initiate" or "immediate") appears in the name of the call, immediately following the first underscore: e.g.,MPI_Ibcast(). - 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.
Nearly all supercomputing environments will include an MPI-3 (or higher) implementation as the default MPI module. The very latest MPI versions may be available as optional modules. HPC systems that rely on the module system provide instructions on how to locate, inspect and load modules in their respective user guides. If more than one MPI version or implementation is present, each of them may depend on a specific compiler and its libraries as well, so the correct compiler module may need to be swapped first.
If your system does not use Linux environment modules, then manual configuration of environment variables may be necessary in order for you to build and run MPI codes. Consult your local MPI documentation for guidance.
CVW material development is supported by NSF OAC awards 1854828, 2321040, 2323116 (UT Austin) and 2005506 (Indiana University)