|
Packit Service |
c5cf8c |
%
|
|
Packit Service |
c5cf8c |
% This is a latex file that generates a reference manual for
|
|
Packit Service |
c5cf8c |
% PMI
|
|
Packit Service |
c5cf8c |
%
|
|
Packit Service |
c5cf8c |
% The following tricky code lets us build clean Postscript and PDF versions
|
|
Packit Service |
c5cf8c |
% from the same file (see the Makefile)
|
|
Packit Service |
c5cf8c |
%\def\foobar{\relax}
|
|
Packit Service |
c5cf8c |
\ifx\unknown\foobar
|
|
Packit Service |
c5cf8c |
\def\texorpdfstring#1#2{#1}
|
|
Packit Service |
c5cf8c |
\documentclass{article}
|
|
Packit Service |
c5cf8c |
\usepackage{url}
|
|
Packit Service |
c5cf8c |
\else
|
|
Packit Service |
c5cf8c |
\documentclass[dvipdfm]{article}
|
|
Packit Service |
c5cf8c |
\usepackage[dvipdfm]{hyperref}
|
|
Packit Service |
c5cf8c |
\fi
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\usepackage{tpage}
|
|
Packit Service |
c5cf8c |
\usepackage{../refman/refman}
|
|
Packit Service |
c5cf8c |
\usepackage{epsf}
|
|
Packit Service |
c5cf8c |
%\usepackage{psfig}
|
|
Packit Service |
c5cf8c |
%hyperref - do not remove this comment
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\textheight=9in
|
|
Packit Service |
c5cf8c |
\textwidth=6.1in
|
|
Packit Service |
c5cf8c |
\oddsidemargin=.2in
|
|
Packit Service |
c5cf8c |
\topmargin=-.50in
|
|
Packit Service |
c5cf8c |
\newread\testfile
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
%
|
|
Packit Service |
c5cf8c |
% For now, let findex be the same as index. This will allow us to
|
|
Packit Service |
c5cf8c |
% more easily separate function and nonfunction index entries later.
|
|
Packit Service |
c5cf8c |
\let\findex=\index
|
|
Packit Service |
c5cf8c |
%
|
|
Packit Service |
c5cf8c |
% Modify the way titles are handled for no breaks between pages
|
|
Packit Service |
c5cf8c |
\def\mantitle#1#2#3{\pagerule\nobreak
|
|
Packit Service |
c5cf8c |
\ifmancontents\addcontentsline{toc}{subsection}{#1}\fi
|
|
Packit Service |
c5cf8c |
\index{#1}}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\makeindex
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\begin{document}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\markright{PMI Reference Manual}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\def\nopound{\catcode`\#=13}
|
|
Packit Service |
c5cf8c |
{\nopound\gdef#{{\tt \char`\#}}}
|
|
Packit Service |
c5cf8c |
\catcode`\_=13
|
|
Packit Service |
c5cf8c |
\def_{{\tt \char`\_}}
|
|
Packit Service |
c5cf8c |
\catcode`\_=11
|
|
Packit Service |
c5cf8c |
\def\code#1{{\tt #1}}
|
|
Packit Service |
c5cf8c |
%\let\url=\code
|
|
Packit Service |
c5cf8c |
\def\makeussubscript{\catcode`\_=8}
|
|
Packit Service |
c5cf8c |
\def\makeustext{\catcode`\_=11}
|
|
Packit Service |
c5cf8c |
%\tpageoneskip
|
|
Packit Service |
c5cf8c |
\ANLTMTitle{Process Manager Interface\\
|
|
Packit Service |
c5cf8c |
Version 1.0\\
|
|
Packit Service |
c5cf8c |
Reference Manual\\\ \\Draft of \today}{\em
|
|
Packit Service |
c5cf8c |
William Gropp\\
|
|
Packit Service |
c5cf8c |
Ewing Lusk\\
|
|
Packit Service |
c5cf8c |
Brian R. Toonen\\
|
|
Packit Service |
c5cf8c |
David Ashton\\
|
|
Packit Service |
c5cf8c |
Mathematics and Computer Science Division\\
|
|
Packit Service |
c5cf8c |
Argonne National Laboratory}{00}{\today}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\clearpage
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\pagenumbering{roman}
|
|
Packit Service |
c5cf8c |
\tableofcontents
|
|
Packit Service |
c5cf8c |
\clearpage
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\pagenumbering{arabic}
|
|
Packit Service |
c5cf8c |
\pagestyle{headings}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\section{Introduction}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
MPI needs the services of a process manager.
|
|
Packit Service |
c5cf8c |
Many MPI implementations include their own process managers.
|
|
Packit Service |
c5cf8c |
For greatest flexibility and usability, an MPI program should work with any
|
|
Packit Service |
c5cf8c |
process manager, including third-party process managers (e.g., PBS).
|
|
Packit Service |
c5cf8c |
MPICH uses a ``Process Manager Interface'' (PMI) to separate the process
|
|
Packit Service |
c5cf8c |
management functions from the MPI implementation.
|
|
Packit Service |
c5cf8c |
PMI should be scalable in design and functional in specification.
|
|
Packit Service |
c5cf8c |
MPICH executables can be handled by different process managers without
|
|
Packit Service |
c5cf8c |
recompiling or relinking.
|
|
Packit Service |
c5cf8c |
MPICH includes multiple implementations.
|
|
Packit Service |
c5cf8c |
We are in discussions with vendors to support PMI directly.
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\section{Process group functions}
|
|
Packit Service |
c5cf8c |
This section describes the functions that provide the basic process management
|
|
Packit Service |
c5cf8c |
functions in PMI. These include routines to initialize and finalize PMI,
|
|
Packit Service |
c5cf8c |
routines to get information about a parallel program (such as size and rank),
|
|
Packit Service |
c5cf8c |
and inquire about the topology of the parallel computer (specifically, whether
|
|
Packit Service |
c5cf8c |
it is a cluster of SMPs, and if so, which processes share the same node).
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
It should be easy to implement the routines in this section in most process
|
|
Packit Service |
c5cf8c |
managers.
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Init.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Initialized.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Finalize.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Get_rank.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Get_size.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Get_universe_size.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Get_id.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Get_kvs_domain_id.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Get_id_length_max.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Get_clique_size.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Get_clique_ranks.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Barrier.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Abort.tex}
|
|
Packit Service |
c5cf8c |
%\input{ch3man/.tex}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\section{Keyval space functions}
|
|
Packit Service |
c5cf8c |
This section describes the functions to provide a way for processes in a
|
|
Packit Service |
c5cf8c |
parallel program to exchange information. This information may be used, for
|
|
Packit Service |
c5cf8c |
example, to discover the host and port of another process when TCP is used for
|
|
Packit Service |
c5cf8c |
communication between those processes. These routines are included as part of
|
|
Packit Service |
c5cf8c |
the PMI because they are part of process management in a parallel setting and
|
|
Packit Service |
c5cf8c |
because a process manager is well-placed to provide these services. However,
|
|
Packit Service |
c5cf8c |
a PMI implementation, particularly one built on top of an existing process
|
|
Packit Service |
c5cf8c |
manager, may choose to use a separate service to support these functions.
|
|
Packit Service |
c5cf8c |
For example, a separate process that provides a well-known host and port could
|
|
Packit Service |
c5cf8c |
be contacted by any process requiring these keyval space services.
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_KVS_Get_my_name.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_KVS_Get.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_KVS_Put.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_KVS_Commit.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_KVS_Create.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_KVS_Destroy.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_KVS_Get_name_length_max.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_KVS_Get_key_length_max.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_KVS_Get_value_length_max.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_KVS_Iter_first.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_KVS_Iter_next.tex}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\section{Spawn function}
|
|
Packit Service |
c5cf8c |
This section describes the functions that are used to create new processes and
|
|
Packit Service |
c5cf8c |
to make them visible to the other processes in a parallel job.
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_keyval_t.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Spawn_multiple.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Parse_option.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Args_to_keyval.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Free_keyvals.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Get_options.tex}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\section{External interface functions}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Publish_name.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Unpublish_name.tex}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_Lookup_name.tex}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\section{PMI Constants}
|
|
Packit Service |
c5cf8c |
\input{pmiman/PMI_CONSTANTS.tex}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
% Index
|
|
Packit Service |
c5cf8c |
%\openin\testfile{pmi.ind}
|
|
Packit Service |
c5cf8c |
%\ifeof\testfile\else
|
|
Packit Service |
c5cf8c |
\let\SaveIndex=\theindex
|
|
Packit Service |
c5cf8c |
\long\def\theindex#1{\SaveIndex{#1}\addcontentsline{toc}{section}{Index}}
|
|
Packit Service |
c5cf8c |
\input pmi.ind
|
|
Packit Service |
c5cf8c |
%\fi
|
|
Packit Service |
c5cf8c |
%\closein\testfile
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
\end{document}
|