From 0e2f9720ff01e6850730c07e426f751a0593c84e Mon Sep 17 00:00:00 2001 From: Pophale Date: Mon, 15 Mar 2021 14:11:46 -0400 Subject: [PATCH 1/3] Adding MPI Sessions Use-Case. Signed-off-by: Swaroop Pophale --- App_Use_Cases.tex | 57 +++++++++++++++++++++++++++++++++++++++++ figs/mpi-sessions1.png | Bin 0 -> 26612 bytes 2 files changed, 57 insertions(+) create mode 100644 figs/mpi-sessions1.png diff --git a/App_Use_Cases.tex b/App_Use_Cases.tex index b4371876..ffaf3e3b 100644 --- a/App_Use_Cases.tex +++ b/App_Use_Cases.tex @@ -448,4 +448,61 @@ \subsubsection{Coordinating at Runtime with Multiple Event Handlers} \refconst{PMIX_EVENT_PARTIAL_ACTION_TAKEN} \\ \refconst{PMIX_EVENT_ACTION_DEFERRED} \\ +\section{MPI Sessions} +\label{app:uc-MPI-sessions} + +\subsection{Use Case Summary} +MPI Sessions addresses a number of the limitations of the current MPI programming model. Among the immediate problems MPI Sessions is intended to address are the following: + +\begin{itemize} +\item MPI cannot be initialized within an MPI process from different application components without a priori knowledge or coordination, +\item MPI cannot be initialized more than once, and MPI cannot be reinitialized after MPI finalize has been called. +\item With MPI Sessions, an application no longer needs to explicitly call \code{MPI_Init} to make use of MPI, but rather can use a Session to only initialize MPI resources for specific communication needs. +\item Unless the MPI process explicitly calls MPI_Init, there is also no explicit \code{MPI_COMM_WORLD} communicator. Sessions can be created and destroyed multiple times in an MPI process. +\end{itemize} + +\subsection{Use Case Details} + +\begingroup +\begin{figure*} + \begin{center} + \includegraphics[width=.5\textwidth,keepaspectratio]{figs/mpi-sessions1} + \end{center} + \caption{MPI Communicator from MPI Session Handle using PMIx} + \label{fig:mpi_s1} +\end{figure*} +\endgroup + +A PMIx Process Set is a user-provided or host environment assigned +label associated with a given set of application processes. Processes can +belong to multiple process sets at a time. Definition of a PMIx +process set typically occurs at time of application execution - e.g., on a +command line: \code{prun -n 4 --pset ocean myoceanapp : -n 3 --pset ice myiceapp} + +PMIx PSETs are used for query functions (\code{MPI_SESSION_GET_NUM_PSETS}, \code{MPI_SESSION_GET_NTH_PSET)} and to create \code{MPI_GROUP} from a process set name. + +PMIx groups are used during creation of \code{MPI_COMM} from an \code{MPI_GROUP}. The PMIx group constructor returns a 64-bit PMIx Group Context Identifier (PGCID) that is guaranteed to be unique for the duration of an allocation (in the case of a batch managed environment). This PGCID could be used as a direct replacement for the existing unique identifiers for communicators in MPI (E.g. Communicator Identifiers (CIDs) in Open MPI), but may have performance implications. + +There is an important distinction between process sets and process groups. The process set identifiers are set by the host environment and currently there are no PMIx APIs provided by which an application can change a process set membership. In contrast, PMIx process groups can only be defined dynamically by the application. + +\littleheader{Related Interfaces} + +{\large \refapi{PMIx_Get}} +\pasteSignature{PMIx_Get} + +{\large \refapi{PMIx_Group_construct}} +\pasteSignature{PMIx_Group_construct} + +\littleheader{Related Attributes} + +\pasteAttributeItem{PMIX_PSET_NAMES} +\pasteAttributeItem{PMIX_QUERY_NUM_GROUPS} +\pasteAttributeItem{PMIX_QUERY_GROUP_NAMES} +\pasteAttributeItem{PMIX_QUERY_GROUP_MEMBERSHIP} + +\littleheader{Related Constants} + +\refconst{PMIX_SUCCESS} +\refconst{PMIX_ERR_NOT_SUPPORTED} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/figs/mpi-sessions1.png b/figs/mpi-sessions1.png new file mode 100644 index 0000000000000000000000000000000000000000..9dbf290dbe524194a25ea3629a35d3b4b455bc8b GIT binary patch literal 26612 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 literal 0 HcmV?d00001 From 57c3324890a362288ca1270f5212fc27486e306f Mon Sep 17 00:00:00 2001 From: Swaroop Pophale Date: Thu, 8 Apr 2021 11:17:07 -0400 Subject: [PATCH 2/3] Update App_Use_Cases.tex Co-authored-by: Stephen Herbein Signed-off-by: Swaroop Pophale --- App_Use_Cases.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/App_Use_Cases.tex b/App_Use_Cases.tex index ffaf3e3b..429de986 100644 --- a/App_Use_Cases.tex +++ b/App_Use_Cases.tex @@ -473,7 +473,7 @@ \subsection{Use Case Details} \end{figure*} \endgroup -A PMIx Process Set is a user-provided or host environment assigned +A PMIx Process Set (PSET) is a user-provided or host environment assigned label associated with a given set of application processes. Processes can belong to multiple process sets at a time. Definition of a PMIx process set typically occurs at time of application execution - e.g., on a From 78d6f2fff5939f594a22ca4c6a80adf3e1108e07 Mon Sep 17 00:00:00 2001 From: Swaroop Pophale Date: Thu, 8 Apr 2021 11:17:57 -0400 Subject: [PATCH 3/3] Update App_Use_Cases.tex Co-authored-by: Stephen Herbein Signed-off-by: Swaroop Pophale --- App_Use_Cases.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/App_Use_Cases.tex b/App_Use_Cases.tex index 429de986..5c284d4d 100644 --- a/App_Use_Cases.tex +++ b/App_Use_Cases.tex @@ -481,7 +481,7 @@ \subsection{Use Case Details} PMIx PSETs are used for query functions (\code{MPI_SESSION_GET_NUM_PSETS}, \code{MPI_SESSION_GET_NTH_PSET)} and to create \code{MPI_GROUP} from a process set name. -PMIx groups are used during creation of \code{MPI_COMM} from an \code{MPI_GROUP}. The PMIx group constructor returns a 64-bit PMIx Group Context Identifier (PGCID) that is guaranteed to be unique for the duration of an allocation (in the case of a batch managed environment). This PGCID could be used as a direct replacement for the existing unique identifiers for communicators in MPI (E.g. Communicator Identifiers (CIDs) in Open MPI), but may have performance implications. +In OpenMPI's MPI Sessions prototype, PMIx groups are used during creation of \code{MPI_COMM} from an \code{MPI_GROUP}. The PMIx group constructor returns a 64-bit PMIx Group Context Identifier (PGCID) that is guaranteed to be unique for the duration of an allocation (in the case of a batch managed environment). This PGCID could be used as a direct replacement for the existing unique identifiers for communicators in MPI (E.g. Communicator Identifiers (CIDs) in Open MPI), but may have performance implications. There is an important distinction between process sets and process groups. The process set identifiers are set by the host environment and currently there are no PMIx APIs provided by which an application can change a process set membership. In contrast, PMIx process groups can only be defined dynamically by the application.