1libmpi(7)                        LAM OVERVIEW                        libmpi(7)
2
3
4

NAME

6       libmpi - LAM/MPI implementation
7

DESCRIPTION

9       LAM features a full implementation of Message Passing Interface (MPI) 1
10       standard with many features included from the MPI-2 standard.
11
12       Compliant applications are source code portable  between  LAM  and  any
13       other  implementation of MPI.  In addition to meeting the standard in a
14       high quality manner, LAM offers extensive  monitoring  capabilities  to
15       support  debugging.   Monitoring  happens  on  two levels.  LAM has the
16       hooks to allow a snapshot of process and message status to be taken  at
17       any time during an application run.  The status includes all aspects of
18       synchronization plus datatype map / signature, communicator group  mem‐
19       bership  and message contents.  On the second level, the MPI library is
20       instrumented to produce a cumulative record of communication, which can
21       be visualized either at runtime or post-mortem.
22
23       LAM/MPI features the ability to change its underlying message transport
24       mechanism, as well as pass tunable parameters to  different  components
25       in  LAM/MPI at run-time -- without the need to recompile or relink user
26       MPI applications.  This provides great flexibility for both  developers
27       of  MPI  software as well as researchers investigating MPI performance.
28       This modual framework is called the System  Services  Interface  (SSI),
29       and is responsible for much of the back-end functionality in LAM/MPI.
30
31       Another  strength  of  this  MPI implementation is the movement of non-
32       blocking communication  requests,  including  those  that  result  from
33       buffered sends.  This is the real challenge of implementing MPI; every‐
34       thing else is mostly a straight forward wrapping of an underlying  com‐
35       munication mechanism.  LAM allows messages to be buffered on the source
36       end in any state of progression, including partially transmitted  pack‐
37       ets.  This capability leads to great portability and robustness.
38
39   User Information
40       Users  are strongly encouraged to read the LAM/MPI User's Guide that is
41       included with the LAM/MPI distribution, and is  provided  on  the  main
42       LAM/MPI web site (http://www.lam-mpi.org/).
43
44   Up-to-Date Information
45       The   LAM   home   page  can  be  found  on  the  World  Wide  Web  at:
46       http://www.lam-mpi.org/.  It should be consulted for the  most  current
47       information about LAM, as well as updates, patches, etc.
48
49   MPI Communication
50       The  sophisticated  message  advancing  engine  at the heart of the MPI
51       library uses only a handful of routines to drive the underlying  commu‐
52       nication  system.   Runtime  flags  decide which message passing engine
53       module is used, so recompilation of user programs is not necessary.
54
55       The different message passing  engines  are  commonly  referred  to  as
56       "Request  Progression  Interface" (RPI) modules.  The LAM/MPI distribu‐
57       tion includes multiple RPI modules; see the lamssi_rpi(7) man page  for
58       more details.
59
60       One  notable  module  uses  LAM's  network  message-passing  subsystem,
61       including its buffer daemon.  In this "daemon"  mode,  LAM's  extensive
62       monitoring  features  are  fully available.  Although the "daemon" mode
63       typically incurrs higher latency than the "native" RPI modules,  appli‐
64       cations  that  can  utilize  latency-hiding  techniques  may experience
65       greater performance due to the daemon-mode's ability  to  exhibit  true
66       asynchronous message passing.
67
68   Guaranteed Envelope Resources
69       Applications  may  fail,  legitimately, on some implementations but not
70       others due to an escape hatch in the MPI Standard called "resource lim‐
71       itations".   Most  resources  are managed locally and it is easy for an
72       implementation to provide a helpful error code and/or  message  when  a
73       resource  is  exhausted.  Buffer space for message envelopes is often a
74       remote resource (as in LAM) which is difficult to manage.  An  overflow
75       may  not  be reported (as in some other implementations) to the process
76       that caused the overflow.  Moreover, interpretation of the MPI  guaran‐
77       tee  on  message  progress  may confuse the debugging of an application
78       that actually died on envelope overflow.
79
80       LAM has a property called "Guaranteed Envelope Resources"  (GER)  which
81       serves  two  purposes.   It is a promise from the implementation to the
82       application that a minimum amount of envelope buffering will be  avail‐
83       able  to  each process pair.  Secondly, it ensures that the producer of
84       messages that overflows this resource will be throttled or  cited  with
85       an error as necessary.
86
87       A  minimum GER is configured when LAM is built.  The MPI library uses a
88       protocol to ensure GER when running in daemon mode.   The  default  C2C
89       mode  (TCP/IP) does not use a protocol, because process-pair protection
90       is provided by TCP/IP itself.  Errors are only reported to the  receiv‐
91       ing process in C2C mode.  An option to mpirun(1) disables GER.
92
93   Input and Output
94       The MPI standard does not specify standard I/O functionality.  LAM does
95       not interfere with the I/O capabilities of the underlying system but it
96       does  make  special  provisions  for  remote  terminal  I/O  using  the
97       ANSI/POSIX routines.  See mpirun(1) and tstdio(3).
98
99       LAM now includes the ROMIO distribution for MPI-2 file input  and  out‐
100       put.   If  ROMIO  support  is compiled into LAM, the functionality from
101       Chapter 9 of the MPI-2 standard is provided.
102
103       ROMIO has some important limitations under LAM; the User's Guide in the
104       LAM  distribution  should be consulted before writing MPI programs that
105       use MPI I/O.
106
107   Dynamic Processes
108       LAM includes an implementation of MPI-2 dynamic process creation.
109

LAM Extensions to MPI

111   Debugging Aids
112       LAM includes the MPI-2 functionality for naming opaque types.   Support
113       for  the  Etnus  TotalView  parallel debugger is also provided; see the
114       User's Guide for more details.
115
116       Additionally, LAM provides the capability to launch non-MPI programs on
117       remote nodes.  This includes shell scripts, debuggers, etc.  As long as
118       an MPI program is eventually launched (as a child,  grandchild,  etc.),
119       LAM  can  handle  executing as many intermediate programs as necessary.
120       This can greatly help debugging and logging of user programs.
121
122   Trace Generation
123       To avoid being swamped with trace data from a long running application,
124       LAM  supplies  collective  operations  to turn the tap on and off.  See
125       MPIL_Trace_on(2) and MPIL_Trace_off(2).
126
127   Asynchronous Signals
128       LAM has an signal handling package which mirrors but does not interfere
129       with POSIX signal handling.  An MPI extension routine delivers a signal
130       to a process.  See MPIL_Signal(2).
131

SEE ALSO

133   Overview of Commands and Libraries
134       introu(1), introc(2), INTROF(2)
135
136   System Services Interface (SSI)
137       lamssi(7), lamssi_boot(7), lamssi_coll(7), lamssi_rpi(7)
138
139   Starting / Stopping LAM
140       recon(1), lamboot(1), lamhalt(1),  lamnodes(1),  lamwipe(1),  tping(1),
141       lamgrow(1), lamshrink(1)
142
143   Compiling MPI Applications
144       mpicc(1), mpiCC(1), mpif77(1)
145
146   Running MPI Applications
147       mpirun(1), lamclean(1)
148
149   Running Non-MPI Applications
150       lamexec(1)
151
152   Monitoring MPI Applications
153       mpitask(1)
154
155   Unloading MPI Trace Data
156       lamtrace(1)
157
158   Reference Documents
159       "LAM/MPI Installation Guide"
160              included   in   the   LAM/MPI   distribution  and  available  on
161              http://www.lam-mpi.org/
162
163       "LAM/MPI User's Guide"
164              included  in  the  LAM/MPI   distribution   and   available   on
165              http://www.lam-mpi.org/
166
167       "LAM Frequently Asked Questions"
168              at http://www.lam-mpi.org/faq/
169
170       "MPI Primer / Developing with LAM", Ohio Supercomputer Center
171
172       "MPI:  A Message-Passing Interface Standard", Message-Passing Interface
173              Forum, version 1.1
174              at http://www.mpi-forum.org/
175
176       "MPI-2: Extensions to the Message Passing Interface",  Message  Passing
177              Interface Forum, version 2.0
178              at http://www.mpi-forum.org/
179
180   MPI Quick Tutorials
181       "LAM/MPI ND User Guide / Introduction"
182              at http://www.lam-mpi.org/mpi/tutorials/lam/
183
184       "MPI: It's Easy to Get Started"
185
186       "MPI: Everyday Datatypes"
187
188       "MPI: Everyday Collective Communication"
189
190   Guaranteed Envelope Resources
191       "Robust  MPI Message Delivery Through Guaranteed Resources", MPI Devel‐
192              oper's Conference, 1995
193
194
195
196LAM 7.1.2                         March, 2006                        libmpi(7)
Impressum