[Mpi-comments] Behavior of [Distributed] Graph Topology Constructors when a neighbor is MPI_PROC_NULL

Mor, Omri omrimor2 at illinois.edu
Sat Jan 6 23:50:43 CST 2018


The standard does not explicitly define what MPI_GRAPH_CREATE, MPI_DIST_GRAPH_CREATE_ADJACENT, and MPI_DIST_GRAPH_CREATE do when a neighbor is MPI_PROC_NULL. Note that neighbors (edges in MPI_GRAPH_CREATE; sources and destinations in MPI_DIST_GRAPH_CREATE_ADJACENT and MPI_DIST_GRAPH_CREATE) are process ranks, so MPI_PROC_NULL should be a valid value.

To be consistent with the documentation of MPI_PROC_NULL, which states that "the special value MPI_PROC_NULL can be used instead of a rank wherever a source or a destination argument is required in a call", the graph topology constructors should permit MPI_PROC_NULL as a neighbor.

Communication with such a neighbor via the neighborhood collectives should, of course, behave like point-to-point communication with MPI_PROC_NULL; the buffer is neither communicated nor updated, similar to how the neighborhood collectives currently function at the border of non-periodic cartesian topologies (this behavior is also not stated in the standard, but is logical and in Open MPI’s documentation of the neighborhood collectives).

This simplifies the process of creating and communicating with mostly-uniform topologies, such as a pseudo-cartesian or binary tree topology.


More information about the mpi-comments mailing list