[Mpi-forum] MPI Sessions - final (hopefully) changes (for MPI-4.0 anyway)

HOLMES Daniel d.holmes at epcc.ed.ac.uk
Thu Sep 19 04:30:15 CDT 2019

Hi all,

In the virtual meeting yesterday, I presented a first draft of new text to clarify the number of process sets in the Sessions proposal, in a manner following the precedent in the Tools chapter concerning the number of control/performance variables. However, there were very few attendees and I’d like a broader audience to see the proposed text to capture any objections or suggestions as soon as possible. I include the relevant Github diff below for your delectation.

Note that we are deliberately punting on the whole idea of dynamic process sets (sets that change size or content at runtime) at this stage. Making process sets immutable leads to the creation of new process sets to reflect changes, which could lead to a long list of process sets, which could lead to resource exhaustion in the worst case. We discussed this in the virtual meeting; I outlined an idea to add a new function in a future proposal that would prune the list of process sets, e.g. MPI_Session_prune_psets. This avoids many of the race-conditions inherent in modifying a global iterator concurrently with usage of that iterator. That is, it delegates responsibility to the user to determine when it is safe to reduce the length of (and/or re-order the contents of) the list of process sets. We believe that the current proposed text is sufficient for Sessions 1.0, i.e. for MPI-4.0, and that we can add future extensions to achieve Sessions 2.0 without breaking the stuff in Sessions 1.0.

Please scrutinise this part of the Sessions proposal one more time and let us (Howard and myself) know about any concerns/issues you have.


<https://github.com/mpiwg-sessions/mpi-standard/pull/37/files#diff-3f00f80f9424938e2b747e5771df28c9>    @@ -956,7 +956,15 @@ \subsection{Runtime Query Functions}
\mpifnewbind{MPI\_Session\_get\_num\_psets(session, npset\_names, ierror) \fargs TYPE(MPI\_Session), INTENT(IN) :: session \\ INTEGER, INTENT(OUT) :: npset\_names \\ INTEGER, OPTIONAL, INTENT(OUT) :: ierror}

This function is used to query the runtime for the number of available process sets in which the calling \MPI/ process is a member. The number of available process sets returned by this function may increase with subsequent calls to \mpifunc{MPI\_SESSION\_GET\_NUM\_PSETS}, but will not decrease.
This function is used to query the runtime for the number of available process sets in which the calling \MPI/ process is a member.
An \MPI/ implementation is allowed to increase the number of available process sets during the execution of an \MPI/ application when new process sets become available.
However, \MPI/ implementations are not allowed to change the index of a particular process set name or to delete a process set name once it has been added.
When a process set becomes invalid, for example, when some processes become unreachable due to failures in the communication system, subsequent usage of the process set name should return an appropriate error code.
% [DAN] possibly advice to users for the next sentence?
For example, creating an \const{MPI\_Group} from such a process set might succeed because it is a local operation, but creating an \const{MPI_Comm} from that group and attempting collective communication should return an appropriate error code.

Dr Daniel Holmes PhD
Architect (HPC Research)
d.holmes at epcc.ed.ac.uk<mailto:d.holmes at epcc.ed.ac.uk>
Phone: +44 (0) 131 651 3465
Mobile: +44 (0) 7940 524 088
Address: Room 2.09, Bayes Centre, 47 Potterrow, Central Area, Edinburgh, EH8 9BT
The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mpi-forum.org/pipermail/mpi-forum/attachments/20190919/94ce00c1/attachment-0001.html>

More information about the mpi-forum mailing list