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.


    @@ -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 
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 
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)
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.

mpi-forum mailing list

Reply via email to