1libmpi(7) LAM OVERVIEW libmpi(7)
2
3
4
6 libmpi - LAM/MPI implementation
7
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
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
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)