File: unusual.html

package info (click to toggle)
openmpi 5.0.8-4
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 201,684 kB
  • sloc: ansic: 613,078; makefile: 42,353; sh: 11,194; javascript: 9,244; f90: 7,052; java: 6,404; perl: 5,179; python: 1,859; lex: 740; fortran: 61; cpp: 20; tcl: 12
file content (280 lines) | stat: -rw-r--r-- 18,878 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>10.11. Unusual jobs &mdash; Open MPI 5.0.8 documentation</title>
      <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
      <link rel="stylesheet" type="text/css" href="../_static/css/theme.css" />

  
  <!--[if lt IE 9]>
    <script src="../_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
        <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
        <script src="../_static/jquery.js"></script>
        <script src="../_static/underscore.js"></script>
        <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
        <script src="../_static/doctools.js"></script>
        <script src="../_static/sphinx_highlight.js"></script>
    <script src="../_static/js/theme.js"></script>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="10.12. Troubleshooting" href="troubleshooting.html" />
    <link rel="prev" title="10.10. Launching with Grid Engine" href="gridengine.html" /> 
</head>

<body class="wy-body-for-nav"> 
  <div class="wy-grid-for-nav">
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >

          
          
          <a href="../index.html" class="icon icon-home">
            Open MPI
          </a>
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>
        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
              <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">1. Quick start</a></li>
<li class="toctree-l1"><a class="reference internal" href="../getting-help.html">2. Getting help</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes/index.html">3. Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../installing-open-mpi/index.html">4. Building and installing Open MPI</a></li>
<li class="toctree-l1"><a class="reference internal" href="../features/index.html">5. Open MPI-specific features</a></li>
<li class="toctree-l1"><a class="reference internal" href="../validate.html">6. Validating your installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../version-numbering.html">7. Version numbers and compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">8. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">9. Building MPI applications</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">10. Launching MPI applications</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="quickstart.html">10.1. Quick start: Launching MPI applications</a></li>
<li class="toctree-l2"><a class="reference internal" href="prerequisites.html">10.2. Prerequisites</a></li>
<li class="toctree-l2"><a class="reference internal" href="pmix-and-prrte.html">10.3. The role of PMIx and PRRTE</a></li>
<li class="toctree-l2"><a class="reference internal" href="scheduling.html">10.4. Scheduling processes across hosts</a></li>
<li class="toctree-l2"><a class="reference internal" href="localhost.html">10.5. Launching only on the local node</a></li>
<li class="toctree-l2"><a class="reference internal" href="ssh.html">10.6. Launching with SSH</a></li>
<li class="toctree-l2"><a class="reference internal" href="slurm.html">10.7. Launching with Slurm</a></li>
<li class="toctree-l2"><a class="reference internal" href="lsf.html">10.8. Launching with LSF</a></li>
<li class="toctree-l2"><a class="reference internal" href="tm.html">10.9. Launching with PBS / Torque</a></li>
<li class="toctree-l2"><a class="reference internal" href="gridengine.html">10.10. Launching with Grid Engine</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">10.11. Unusual jobs</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#running-non-mpi-programs-with-mpirun-1">10.11.1. Running non-MPI programs with <span class="xref std std-ref">mpirun(1)</span></a></li>
<li class="toctree-l3"><a class="reference internal" href="#running-gui-applications">10.11.2. Running GUI applications</a></li>
<li class="toctree-l3"><a class="reference internal" href="#running-curses-based-applications">10.11.3. Running curses-based applications</a></li>
<li class="toctree-l3"><a class="reference internal" href="#launching-an-mpmd-mpi-job">10.11.4. Launching an MPMD MPI job</a></li>
<li class="toctree-l3"><a class="reference internal" href="#connecting-independent-mpi-applications">10.11.5. Connecting independent MPI applications</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="troubleshooting.html">10.12. Troubleshooting</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../tuning-apps/index.html">11. Run-time operation and tuning MPI applications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../app-debug/index.html">12. Debugging Open MPI Parallel Applications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../developers/index.html">13. Developer’s guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">14. Contributing to Open MPI</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license/index.html">15. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">16. History of Open MPI</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man-openmpi/index.html">17. Open MPI manual pages</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man-openshmem/index.html">18. OpenSHMEM manual pages</a></li>
</ul>

        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../index.html">Open MPI</a>
      </nav>

      <div class="wy-nav-content">
        <div class="rst-content">
          <div role="navigation" aria-label="Page navigation">
  <ul class="wy-breadcrumbs">
      <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
          <li class="breadcrumb-item"><a href="index.html"><span class="section-number">10. </span>Launching MPI applications</a></li>
      <li class="breadcrumb-item active"><span class="section-number">10.11. </span>Unusual jobs</li>
      <li class="wy-breadcrumbs-aside">
            <a href="../_sources/launching-apps/unusual.rst.txt" rel="nofollow"> View page source</a>
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
             
  <style>
.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}
</style><div class="section" id="unusual-jobs">
<h1><span class="section-number">10.11. </span>Unusual jobs<a class="headerlink" href="#unusual-jobs" title="Permalink to this heading"></a></h1>
<p>Open MPI can run many types of applications, including non-MPI programs.
This section describes some of the less common kinds of programs that can
be executed.</p>
<div class="section" id="running-non-mpi-programs-with-mpirun-1">
<h2><span class="section-number">10.11.1. </span>Running non-MPI programs with <a class="reference internal" href="../man-openmpi/man1/mpirun.1.html#man1-mpirun"><span class="std std-ref">mpirun(1)</span></a><a class="headerlink" href="#running-non-mpi-programs-with-mpirun-1" title="Permalink to this heading"></a></h2>
<p>Non-MPI programs can be launched with <a class="reference internal" href="../man-openmpi/man1/mpirun.1.html#man1-mpirun"><span class="std std-ref">mpirun(1)</span></a>,
for example:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>shell$ mpirun -n 2 --host a,b uptime
</pre></div>
</div>
<p>This will launch a copy of the Unix command <code class="docutils literal notranslate"><span class="pre">uptime</span></code> on the hosts <code class="docutils literal notranslate"><span class="pre">a</span></code>
and <code class="docutils literal notranslate"><span class="pre">b</span></code>.</p>
<p><a class="reference internal" href="../man-openmpi/man1/mpirun.1.html#man1-mpirun"><span class="std std-ref">mpirun(1)</span></a> works equally well for MPI and non-MPI
applications.</p>
</div>
<div class="section" id="running-gui-applications">
<h2><span class="section-number">10.11.2. </span>Running GUI applications<a class="headerlink" href="#running-gui-applications" title="Permalink to this heading"></a></h2>
<p>Running GUI applications depends on your local setup and may require additional
setup.</p>
<p>You will need to have graphics forwarding (e.g., X11
forwarding) enabled from the remote processes to the display where you
want output to appear.  In a secure environment, you can simply allow
all X requests to be shown on the target display and set the
<code class="docutils literal notranslate"><span class="pre">DISPLAY</span></code> environment variable in all MPI processes’ environments to
the target display, perhaps something like this:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>shell$ hostname
my_desktop.secure-cluster.example.com
shell$ xhost +
shell$ mpirun -n 4 -x DISPLAY=my_desktop.secure-cluster.example.com a.out
</pre></div>
</div>
<p>However, this technique is not generally suitable for unsecure
environments (because it allows anyone to read and write to your
display).  A slightly more secure way is to only allow X connections
from the nodes where your application will be running:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>shell$ hostname
my_desktop.secure-cluster.example.com
shell$ xhost +compute1 +compute2 +compute3 +compute4
compute1 being added to access control list
compute2 being added to access control list
compute3 being added to access control list
compute4 being added to access control list
shell$ mpirun -n 4 -x DISPLAY=my_desktop.secure-cluster.example.com a.out
</pre></div>
</div>
<p>(assuming that the four nodes you are running on are <code class="docutils literal notranslate"><span class="pre">compute1</span></code>
through <code class="docutils literal notranslate"><span class="pre">compute4</span></code>).</p>
<p>Other methods are available, but they involve sophisticated X
forwarding through <a class="reference internal" href="../man-openmpi/man1/mpirun.1.html#man1-mpirun"><span class="std std-ref">mpirun(1)</span></a> and are generally
more complicated than desirable.</p>
</div>
<div class="section" id="running-curses-based-applications">
<h2><span class="section-number">10.11.3. </span>Running curses-based applications<a class="headerlink" href="#running-curses-based-applications" title="Permalink to this heading"></a></h2>
<p>Open MPI provides fairly sophisticated stdin / stdout / stderr
forwarding.  However, it does not work well with curses, ncurses,
readline, or other sophisticated I/O packages that generally require
direct control of the terminal.</p>
<p>Every application and I/O library is different — you should try to
see if yours is supported.  But chances are that it won’t work.</p>
</div>
<div class="section" id="launching-an-mpmd-mpi-job">
<h2><span class="section-number">10.11.4. </span>Launching an MPMD MPI job<a class="headerlink" href="#launching-an-mpmd-mpi-job" title="Permalink to this heading"></a></h2>
<p>Open MPI supports multiple program, multiple data (MPMD) style launches,
either from the command line or from a file.  For example:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>shell$ mpirun -n 2 a.out : -n 2 b.out
</pre></div>
</div>
<p>This will launch a single parallel application, but the first two
processes will be instances of the <code class="docutils literal notranslate"><span class="pre">a.out</span></code> executable, and the
second two processes will be instances of the <code class="docutils literal notranslate"><span class="pre">b.out</span></code> executable.
In MPI terms, this will be a single <code class="docutils literal notranslate"><span class="pre">MPI_COMM_WORLD</span></code>, but the
<code class="docutils literal notranslate"><span class="pre">a.out</span></code> processes will be ranks 0 and 1 in <code class="docutils literal notranslate"><span class="pre">MPI_COMM_WORLD</span></code>, while
the <code class="docutils literal notranslate"><span class="pre">b.out</span></code> processes will be ranks 2 and 3 in <code class="docutils literal notranslate"><span class="pre">MPI_COMM_WORLD</span></code>.</p>
<p><a class="reference internal" href="../man-openmpi/man1/mpirun.1.html#man1-mpirun"><span class="std std-ref">mpirun(1)</span></a> can also accept a parallel application
specified in a file instead of on the command line.  For example:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>shell$ mpirun --app my_appfile
</pre></div>
</div>
<p>where the file <code class="docutils literal notranslate"><span class="pre">my_appfile</span></code> contains the following:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="c1"># Comments are supported; comments begin with #</span>
<span class="c1"># Application context files specify each sub-application in the</span>
<span class="c1"># parallel job, one per line.  The first sub-application is the 2</span>
<span class="c1"># a.out processes:</span>
-n<span class="w"> </span><span class="m">2</span><span class="w"> </span>a.out
<span class="c1"># The second sub-application is the 2 b.out processes:</span>
-n<span class="w"> </span><span class="m">2</span><span class="w"> </span>b.out
</pre></div>
</div>
<p>This will result in the same behavior as running <code class="docutils literal notranslate"><span class="pre">a.out</span></code> and <code class="docutils literal notranslate"><span class="pre">b.out</span></code>
from the command line.</p>
</div>
<div class="section" id="connecting-independent-mpi-applications">
<h2><span class="section-number">10.11.5. </span>Connecting independent MPI applications<a class="headerlink" href="#connecting-independent-mpi-applications" title="Permalink to this heading"></a></h2>
<p>In certain environments, Open MPI supports connecting multiple,
independent MPI applications using mechanism defined in the MPI
specification such as <code class="docutils literal notranslate"><span class="pre">MPI_Comm_connect()</span> <span class="pre">/</span> <span class="pre">MPI_Comm_accept()</span></code> and
publishing connection information using <code class="docutils literal notranslate"><span class="pre">MPI_Publish_name()</span> <span class="pre">/</span>
<span class="pre">MPI_Lookup_name()</span></code>. These mechanisms require a centralized service
to exchange contact information across multiple jobs.</p>
<p>Beginning with Open MPI v5.0.0 this can be achieved by starting an
instance of the prte server with the <code class="docutils literal notranslate"><span class="pre">report-uri</span></code> option to
display the contact information of the prte server. This information
can then be used for launching subsequent MPI applications.</p>
<p>The following commands show an example for launching two MPI jobs
that will connect to each other at runtime using the MPI-2 based
functionality.</p>
<p>Step 1: start the standalone prte server</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>user@myhost:~/ompi-install/bin$ ./prte --report-uri &lt;filename&gt;
DVM ready
</pre></div>
</div>
<p>Step 2: Launch the first MPI application providing the uri of the
prte server</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>user@myhost:~/app1-dir$ mpiexec --dvm file:&lt;filename&gt; -np 4 ./mpi_app_1
</pre></div>
</div>
<p>Step 3: Launch the second MPI application providing the uri of the
prte server again</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>user@myhost:~/app2-dir$ mpiexec --dvm file:&lt;filename&gt; -np 4 ./mpi_app_2
</pre></div>
</div>
<p>In case the prte server has been started as a system server using the
<code class="docutils literal notranslate"><span class="pre">--system-server</span></code> argument (e.g. the nodes used by the MPI
applications are not shared by multiple jobs), the sequence can be
simplified by using <code class="docutils literal notranslate"><span class="pre">mpiexec</span> <span class="pre">--dvm</span> <span class="pre">system</span></code> or <code class="docutils literal notranslate"><span class="pre">mpiexec</span> <span class="pre">--dvm</span>
<span class="pre">system-first</span></code> instead of the uri of the prte server.</p>
</div>
</div>


           </div>
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="gridengine.html" class="btn btn-neutral float-left" title="10.10. Launching with Grid Engine" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="troubleshooting.html" class="btn btn-neutral float-right" title="10.12. Troubleshooting" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    </div>

  <hr/>

  <div role="contentinfo">
    <p>&#169; Copyright 2003-2025, The Open MPI Community.
      <span class="lastupdated">Last updated on 2025-05-30 16:41:43 UTC.
      </span></p>
  </div>

  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    provided by <a href="https://readthedocs.org">Read the Docs</a>.
   

</footer>
        </div>
      </div>
    </section>
  </div>
  <script>
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script> 

</body>
</html>