Blame doc/pmi/pmi.tex

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}