File: quickstart.html

package info (click to toggle)
openmpi 5.0.8-9
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 201,680 kB
  • sloc: ansic: 613,078; makefile: 42,350; 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 (324 lines) | stat: -rw-r--r-- 24,414 bytes parent folder | download
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
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
<!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>5.1. Installation &mdash; OpenPMIx 5.0.8a1 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="5.2. Definitions" href="definitions.html" />
    <link rel="prev" title="5. Building and installing PMIx" href="index.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">
            OpenPMIx
          </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="../exceptions.html">4. Exceptions to the PMIx Standard</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">5. Building and installing PMIx</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">5.1. Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#developer-builds">5.1.1. Developer Builds</a></li>
<li class="toctree-l3"><a class="reference internal" href="#user-builds">5.1.2. User Builds</a></li>
<li class="toctree-l3"><a class="reference internal" href="#configure-options">5.1.3. <code class="docutils literal notranslate"><span class="pre">configure</span></code> options</a></li>
<li class="toctree-l3"><a class="reference internal" href="#building-static-libraries">5.1.4. Building Static Libraries</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="definitions.html">5.2. Definitions</a></li>
<li class="toctree-l2"><a class="reference internal" href="filesystem-requirements.html">5.3. Filesystem requirements</a></li>
<li class="toctree-l2"><a class="reference internal" href="vpath-builds.html">5.4. VPATH builds</a></li>
<li class="toctree-l2"><a class="reference internal" href="compilers-and-flags.html">5.5. Specifying compilers and flags</a></li>
<li class="toctree-l2"><a class="reference internal" href="required-support-libraries.html">5.6. Required support libraries</a></li>
<li class="toctree-l2"><a class="reference internal" href="configure-cli-options/index.html">5.7. <code class="docutils literal notranslate"><span class="pre">configure</span></code> command line options</a></li>
<li class="toctree-l2"><a class="reference internal" href="configure-output-summary.html">5.8. <code class="docutils literal notranslate"><span class="pre">configure</span></code> output summary</a></li>
<li class="toctree-l2"><a class="reference internal" href="make-targets.html">5.9. <code class="docutils literal notranslate"><span class="pre">make</span></code> targets</a></li>
<li class="toctree-l2"><a class="reference internal" href="installation-location.html">5.10. Installation location</a></li>
<li class="toctree-l2"><a class="reference internal" href="packagers.html">5.11. Advice for packagers</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../how-things-work/index.html">6. How Things Work</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release-notes.html">7. Release Notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="../history.html">8. History</a></li>
<li class="toctree-l1"><a class="reference internal" href="../versions.html">9. Version Numbers and Binary Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="../mca.html">10. The Modular Component Architecture (MCA)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../building-apps/index.html">11. Building PMIx applications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../developers/index.html">12. Developer’s guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../contributing.html">13. Contributing to OpenPMIx</a></li>
<li class="toctree-l1"><a class="reference internal" href="../license.html">14. License</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security.html">15. OpenPMIx Security Policy</a></li>
<li class="toctree-l1"><a class="reference internal" href="../news/index.html">16. News</a></li>
<li class="toctree-l1"><a class="reference internal" href="../man/index.html">17. OpenPMIx 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">OpenPMIx</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">5. </span>Building and installing PMIx</a></li>
      <li class="breadcrumb-item active"><span class="section-number">5.1. </span>Installation</li>
      <li class="wy-breadcrumbs-aside">
            <a href="../_sources/installing-pmix/quickstart.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="installation">
<span id="label-quickstart-building-pmix"></span><h1><span class="section-number">5.1. </span>Installation<a class="headerlink" href="#installation" title="Permalink to this heading"></a></h1>
<p>This file is a <em>very</em> short overview of building and installing the
PMIx library.  Much more information is available in the <a class="reference external" href="https://pmix.org/support/how-to/">How-To
section on the PMIx web site</a>.</p>
<div class="section" id="developer-builds">
<h2><span class="section-number">5.1.1. </span>Developer Builds<a class="headerlink" href="#developer-builds" title="Permalink to this heading"></a></h2>
<p>If you have checked out a DEVELOPER’S COPY of PMIx (i.e., you checked
out from Git), you should read the <a class="reference internal" href="../developers/index.html"><span class="doc">Developer’s Guide</span></a> section before attempting to build PMIx.  You
must then run:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>git<span class="w"> </span>submodule<span class="w"> </span>update<span class="w"> </span>--init
shell$<span class="w"> </span>./autogen.pl
</pre></div>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">submodule</span> <span class="pre">update</span></code> is required as PMIx incorporates a submodule
to support its <cite>autoconf</cite> logic. You can, however, omit the explicit
submodule update step <cite>if</cite> you cloned the Git repository with the
<code class="docutils literal notranslate"><span class="pre">--recursive</span></code> flag.</p>
<p>You will need very recent versions of GNU Autoconf, Automake, and
Libtool.  If <code class="docutils literal notranslate"><span class="pre">autogen.pl</span></code> fails, read the <a class="reference internal" href="../developers/index.html"><span class="doc">Developer’s Guide</span></a>.  If anything else fails, read the
<a class="reference internal" href="../developers/index.html"><span class="doc">Developer’s Guide</span></a>.  Finally, we suggest
reading the <a class="reference internal" href="../developers/index.html"><span class="doc">Developer’s Guide</span></a>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Developer’s copies of OpenPMIx typically include a large
performance penalty at run-time because of extra debugging
overhead.</p>
</div>
</div>
<div class="section" id="user-builds">
<h2><span class="section-number">5.1.2. </span>User Builds<a class="headerlink" href="#user-builds" title="Permalink to this heading"></a></h2>
<p>Building PMIx is typically a combination of running <code class="docutils literal notranslate"><span class="pre">configure</span></code>
and <code class="docutils literal notranslate"><span class="pre">make</span></code>.  Execute the following commands to install the PMIx
system from within the directory at the top of the tree:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>./configure<span class="w"> </span>--prefix<span class="o">=</span>/where/to/install
<span class="o">[</span>...lots<span class="w"> </span>of<span class="w"> </span>output...<span class="o">]</span>
shell$<span class="w"> </span>make<span class="w"> </span>all<span class="w"> </span>install
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This version of PMIx requires the following 3rd-party
packages to build and operate:</p>
<ul class="simple">
<li><p>either the <a class="reference external" href="https://libevent.org/">Libevent package</a> (any version
of Libevent greater than or equal to 2.0.21 is acceptable) or
the <a class="reference external" href="https://metacpan.org/dist/EV/view/libev/ev.pod">libev package</a>
(no minimum version has been identified).</p></li>
<li><p>the <a class="reference external" href="https://www.open-mpi.org/projects/hwloc/">HWLOC package</a> for providing
topology information to both the host environment (by
collecting local inventory for rollup) and local client
processes. Any version of HWLOC greater than 1.10 is
supported, although versions in the 2.x series are
recommended.</p></li>
</ul>
</div>
<p>Note that you must point <code class="docutils literal notranslate"><span class="pre">configure</span></code> at these packages if they are
in a non-standard location - libevent using the <code class="docutils literal notranslate"><span class="pre">--with-libevent=&lt;dir&gt;</span></code>
option; libev using the <code class="docutils literal notranslate"><span class="pre">-with-libev=&lt;dir&gt;</span></code> option, and HWLOC package
using the <code class="docutils literal notranslate"><span class="pre">--with-hwloc=&lt;dir&gt;</span></code> option. In all cases,
PMIx will automatically detect these packages in standard locations
and use them unless otherwise specified using the
respective configure option.</p>
<p>If you need special access to install, then you can execute <code class="docutils literal notranslate"><span class="pre">make</span>
<span class="pre">all</span></code> as a user with write permissions in the build tree, and a
separate <code class="docutils literal notranslate"><span class="pre">make</span> <span class="pre">install</span></code> as a user with write permissions to the
install tree.</p>
<p>Compiling support for specific compilers and environments may require
additional command line flags when running <code class="docutils literal notranslate"><span class="pre">configure</span></code>.  See the
<a class="reference internal" href="compilers-and-flags.html#install-configure-compilers-and-flags-label"><span class="std std-ref">compiler flags</span></a> entry
for more details.</p>
<p>Note that VPATH builds are fully supported.  For example:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>tar<span class="w"> </span>xf<span class="w"> </span>pmix-X.Y.Z.tar.gz
shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>pmix-X.Y.Z
shell$<span class="w"> </span>mkdir<span class="w"> </span>build
shell$<span class="w"> </span><span class="nb">cd</span><span class="w"> </span>build
shell$<span class="w"> </span>../configure<span class="w"> </span>...your<span class="w"> </span>options...
<span class="o">[</span>...lots<span class="w"> </span>of<span class="w"> </span>output...<span class="o">]</span>
shell$<span class="w"> </span>make<span class="w"> </span>all<span class="w"> </span>install
</pre></div>
</div>
<p>Parallel builds are also supported (although some versions of <code class="docutils literal notranslate"><span class="pre">make</span></code>,
such as GNU make, will only use the first target listed on the command
line when executable parallel builds).  For example (assume GNU make):</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>make<span class="w"> </span>-j<span class="w"> </span><span class="m">4</span><span class="w"> </span>all
<span class="o">[</span>...lots<span class="w"> </span>of<span class="w"> </span>output...<span class="o">]</span>
shell$<span class="w"> </span>make<span class="w"> </span>install
</pre></div>
</div>
<p>Parallel make is generally only helpful in the build phase; the
installation process is mostly serial and does not benefit much from
parallel make.</p>
</div>
<div class="section" id="configure-options">
<h2><span class="section-number">5.1.3. </span><code class="docutils literal notranslate"><span class="pre">configure</span></code> options<a class="headerlink" href="#configure-options" title="Permalink to this heading"></a></h2>
<p>There are many available options to <code class="docutils literal notranslate"><span class="pre">configure</span></code> (see <code class="docutils literal notranslate"><span class="pre">./configure</span> <span class="pre">--help</span></code>
for a full list); a summary of the more commonly used ones follows:</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">--prefix=&lt;directory&gt;</span></code>: Install PMIx into the base directory named
<code class="docutils literal notranslate"><span class="pre">&lt;directory&gt;</span></code>.  Hence, PMIx will place its executables in
<code class="docutils literal notranslate"><span class="pre">&lt;directory&gt;/bin</span></code>, its header files in <code class="docutils literal notranslate"><span class="pre">&lt;directory&gt;/include</span></code>,
its libraries in <code class="docutils literal notranslate"><span class="pre">&lt;directory&gt;/lib</span></code>, etc.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">--disable-shared</span></code>: By default, <code class="docutils literal notranslate"><span class="pre">libpmix</span></code> is built as a shared
library.  This switch disables this default; it is really only
useful when used with <code class="docutils literal notranslate"><span class="pre">--enable-static</span></code>.  Specifically, this
option does <em>not</em> imply <code class="docutils literal notranslate"><span class="pre">--enable-static</span></code>; enabling static
libraries and disabling shared libraries are two independent
options.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">--enable-static</span></code>: Build <code class="docutils literal notranslate"><span class="pre">libpmix</span></code> as a static library.  Note
that this option does <em>not</em> imply <code class="docutils literal notranslate"><span class="pre">--disable-shared</span></code>; enabling
static libraries and disabling shared libraries are two independent
options.  Please see the <a class="reference internal" href="#label-install-static-libraries"><span class="std std-ref">Building Static Libraries</span></a> section below for important
details on building PMIx as a static library.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">--disable-show-load-errors-by-default</span></code>: Set the default value of
the <code class="docutils literal notranslate"><span class="pre">mca_base_component_show_load_errors</span></code> MCA variable: the
<code class="docutils literal notranslate"><span class="pre">--enable</span></code> form of this option sets the MCA variable to true, the
<code class="docutils literal notranslate"><span class="pre">--disable</span></code> form sets the MCA variable to false.  The MCA
<code class="docutils literal notranslate"><span class="pre">mca_base_component_show_load_errors</span></code> variable can still be
overridden at run time via the usual MCA-variable-setting
mechanisms; this configure option simply sets the default value.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">--disable</span></code> form of this option is intended for OpenPMIx
packagers who tend to enable support for many different types of
networks and systems in their packages.  For example, consider a
packager who includes support for both the FOO and BAR networks in
their PMIx package, both of which require support libraries
(<code class="docutils literal notranslate"><span class="pre">libFOO.so</span></code> and <code class="docutils literal notranslate"><span class="pre">libBAR.so</span></code>).  If an end user only has BAR
hardware, they likely only have <code class="docutils literal notranslate"><span class="pre">libBAR.so</span></code> available on their
systems – not <code class="docutils literal notranslate"><span class="pre">libFOO.so</span></code>.  Disabling load errors by default will
prevent the user from seeing potentially confusing warnings about
the FOO components failing to load because <code class="docutils literal notranslate"><span class="pre">libFOO.so</span></code> is not
available on their systems.</p>
<p>Conversely, system administrators tend to build an OpenPMIx that is
targeted at their specific environment, and contains few (if any)
components that are not needed.  In such cases, they might want
their users to be warned that the FOO network components failed to
load (e.g., if <code class="docutils literal notranslate"><span class="pre">libFOO.so</span></code> was mistakenly unavailable), and thus
some PMIx calls might unexpectedly return “not supported”.</p>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">--with-platform=FILE</span></code>: Load configure options for the build from
<code class="docutils literal notranslate"><span class="pre">FILE</span></code>.  Options on the command line that are not in <code class="docutils literal notranslate"><span class="pre">FILE</span></code> are
also used.  Options on the command line and in <code class="docutils literal notranslate"><span class="pre">FILE</span></code> are replaced
by what is in <code class="docutils literal notranslate"><span class="pre">FILE</span></code>.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">--enable-python-bindings</span></code>:
Build the Python bindings for PMIx. Note the following packages
are required to be installed:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>shell$<span class="w"> </span>yum<span class="w"> </span>install<span class="w"> </span>Cython<span class="w"> </span>python3<span class="w"> </span>python3-devel
or...
shell$<span class="w"> </span>pip3<span class="w"> </span>install<span class="w"> </span>Cython
</pre></div>
</div>
</li>
</ul>
<p>Once OpenPMIx has been built and installed, it is safe to run <code class="docutils literal notranslate"><span class="pre">make</span>
<span class="pre">clean</span></code> and/or remove the entire build tree.</p>
<p>VPATH and parallel builds are fully supported.</p>
<p>Generally speaking, the only thing that users need to do to use OpenPMIx
is ensure that <code class="docutils literal notranslate"><span class="pre">&lt;prefix&gt;/lib</span></code> is in their <code class="docutils literal notranslate"><span class="pre">LD_LIBRARY_PATH</span></code>.  Users may
need to ensure to set <code class="docutils literal notranslate"><span class="pre">LD_LIBRARY_PATH</span></code> in their shell setup files (e.g.,
<code class="docutils literal notranslate"><span class="pre">.bashrc</span></code>, <code class="docutils literal notranslate"><span class="pre">.cshrc</span></code>) so that non-interactive SSH-based logins will
be able to find the OpenPMIx library.</p>
</div>
<div class="section" id="building-static-libraries">
<span id="label-install-static-libraries"></span><h2><span class="section-number">5.1.4. </span>Building Static Libraries<a class="headerlink" href="#building-static-libraries" title="Permalink to this heading"></a></h2>
<p>PMIx depends on a number of external libraries for critical
functionality.  Some of these libraries, such as <a class="reference external" href="https://www.open-mpi.org/projects/hwloc/">HWLOC</a>, can have dependencies on
a varying number of additional libraries (such as libpci or libudev).
While PMIx’s wrapper compiler will add the correct direct dependencies
for third party packages, it will frequently not pull in the right
sub-libraries.  When linking against dyanamic library versions of
these dependencies, this is not a problem (and is preferred behavior
to avoid adding unnecessary indirect linking dependencies).  However,
this does cause problems for building entirely static versions of
PMIx.  It may be necessary in some circumstances to add these
dependencies via the <code class="docutils literal notranslate"><span class="pre">LIBS</span></code> environment variable (for building PMIx
binaries) or <code class="docutils literal notranslate"><span class="pre">--with-wrapper-libs=LIBS</span></code> for the wrapper compiler.</p>
</div>
</div>


           </div>
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="index.html" class="btn btn-neutral float-left" title="5. Building and installing PMIx" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="definitions.html" class="btn btn-neutral float-right" title="5.2. Definitions" 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 2014-2025, OpenPMIx Community.
      <span class="lastupdated">Last updated on 2025-05-30 16:40:24 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>