File: required-support-libraries.html

package info (click to toggle)
openmpi 5.0.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 202,312 kB
  • sloc: ansic: 612,441; makefile: 42,495; sh: 11,230; javascript: 9,244; f90: 7,052; java: 6,404; perl: 5,154; python: 1,856; lex: 740; fortran: 61; cpp: 20; tcl: 12
file content (263 lines) | stat: -rw-r--r-- 16,223 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
<!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.6. Required support libraries &mdash; OpenPMIx 5.0.5 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.7. configure command line options" href="configure-cli-options/index.html" />
    <link rel="prev" title="5.5. Specifying compilers and flags" href="compilers-and-flags.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"><a class="reference internal" href="quickstart.html">5.1. Installation</a></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 current"><a class="current reference internal" href="#">5.6. Required support libraries</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#library-dependencies">5.6.1. Library dependencies</a></li>
<li class="toctree-l3"><a class="reference internal" href="#potential-problems">5.6.2. Potential problems</a></li>
<li class="toctree-l3"><a class="reference internal" href="#avoiding-the-problems">5.6.3. Avoiding the problems</a></li>
<li class="toctree-l3"><a class="reference internal" href="#overriding-configure-behavior">5.6.4. Overriding <code class="docutils literal notranslate"><span class="pre">configure</span></code> behavior</a></li>
</ul>
</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.6. </span>Required support libraries</li>
      <li class="wy-breadcrumbs-aside">
            <a href="../_sources/installing-pmix/required-support-libraries.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="required-support-libraries">
<span id="label-install-required-support-libraries"></span><h1><span class="section-number">5.6. </span>Required support libraries<a class="headerlink" href="#required-support-libraries" title="Permalink to this heading"></a></h1>
<p>PMIx requires the following support libraries with the minimum listed versions:</p>
<table class="colwidths-given docutils align-default">
<colgroup>
<col style="width: 22%" />
<col style="width: 22%" />
<col style="width: 56%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Library</p></th>
<th class="head"><p>Minimum version</p></th>
<th class="head"><p>Notes</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><a class="reference external" href="https://www.open-mpi.org/projects/hwloc/">Hardware Locality</a></p></td>
<td><p>1.11.0</p></td>
<td><p>This library is required; PMIx will not build without it.</p></td>
</tr>
<tr class="row-odd"><td><p><a class="reference external" href="https://libevent.org/">Libevent</a></p></td>
<td><p>2.0.21</p></td>
<td><p>Either libevent or libev must be provided</p></td>
</tr>
<tr class="row-even"><td><p><a class="reference external" href="https://metacpan.org/dist/EV/view/libev/ev.pod">libev</a></p></td>
<td><p>no specified minimum</p></td>
<td><p>Either libevent or libev must be provided</p></td>
</tr>
</tbody>
</table>
<p>These support libraries are fundamental to PMIx’s operation
and pretty universally available in all environments. Worst case,
they can easily be built from their respective source tarballs.</p>
<div class="section" id="library-dependencies">
<h2><span class="section-number">5.6.1. </span>Library dependencies<a class="headerlink" href="#library-dependencies" title="Permalink to this heading"></a></h2>
<p>These support libraries do not have dependencies upon each other.
However, it often is true that another library being used by an
application, or the application itself, can include a dependency
on one or more of them.</p>
<p>At run time, it is critical that the run-time linker loads <em>exactly
one copy</em> of each of these libraries. It is therefore vital that
you have a clear understanding of the dependencies within your
application.</p>
</div>
<div class="section" id="potential-problems">
<h2><span class="section-number">5.6.2. </span>Potential problems<a class="headerlink" href="#potential-problems" title="Permalink to this heading"></a></h2>
<p>Problems can (will) arise if multiple different copies of the above
shared libraries are loaded into a single process.  For example,
consider if:</p>
<ul class="simple">
<li><p>Loading the PMIx shared library causes the loading of Libevent
shared library vA.B.C.</p></li>
<li><p>But then the subsequent loading of the FOO shared library causes
the loading of Libevent shared library vX.Y.Z.</p></li>
</ul>
<p>Since there are now two different versions of the Libevent shared
library loaded into the same process (yes, this can happen!),
unpredictable behavior can (will) occur.</p>
<p>Many variations on this same basic erroneous scenario are possible.
All of them are bad, and can be extremely difficult to diagnose.</p>
</div>
<div class="section" id="avoiding-the-problems">
<h2><span class="section-number">5.6.3. </span>Avoiding the problems<a class="headerlink" href="#avoiding-the-problems" title="Permalink to this heading"></a></h2>
<p>A simple way to avoid these problems is to configure your system such
that it has exactly one copy of each of the required support libraries.</p>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>If possible, use your OS / environment’s package
manager to install as many of these support libraries —
including their development headers — as possible before
invoking PMIx’s <code class="docutils literal notranslate"><span class="pre">configure</span></code> script.</p>
</div>
<p>Not all package managers provide all of the required support
libraries. But even if your package manager installs — for
example — only one of Libevent and Hwloc, that somewhat simplifies the
final PMIx configuration, and therefore avoids some potentially
erroneous configurations.</p>
</div>
<div class="section" id="overriding-configure-behavior">
<h2><span class="section-number">5.6.4. </span>Overriding <code class="docutils literal notranslate"><span class="pre">configure</span></code> behavior<a class="headerlink" href="#overriding-configure-behavior" title="Permalink to this heading"></a></h2>
<p>PMIx’s <code class="docutils literal notranslate"><span class="pre">configure</span></code> will (minus any configure flags) attempt to
find the HWLOC and libevent packages in standard locations. Note
that PMIx by default will look for libevent (and not libev), though
either can be used. If a required package is not found and no flags
were given, the <code class="docutils literal notranslate"><span class="pre">configure</span></code> operation will exit with a suitable
error message.</p>
<p>If <code class="docutils literal notranslate"><span class="pre">configure</span></code>’s default searching behavior is not sufficient for
your environment, you can use <a class="reference internal" href="configure-cli-options/required-support-libraries.html#label-building-pmix-cli-options-required-support-libraries"><span class="std std-ref">command line options to override
its default behavior</span></a>.</p>
<p>For example, if libevent and/or HWLOC are installed such that the default
header file and linker search paths will not find them, you can
provide command line options telling PMIx’s <code class="docutils literal notranslate"><span class="pre">configure</span></code> where to
search.  Here’s an example <code class="docutils literal notranslate"><span class="pre">configure</span></code> invocation where HWLOC
and libevent have both been installed under the <code class="docutils literal notranslate"><span class="pre">/opt</span></code> directory:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>./configure<span class="w"> </span>--prefix<span class="o">=</span><span class="nv">$HOME</span>/pmix-install<span class="w"> </span><span class="se">\</span>
<span class="w">    </span>--with-libevent<span class="o">=</span>/opt/libevent<span class="w"> </span><span class="se">\</span>
<span class="w">    </span>--with-hwloc<span class="o">=</span>/opt/hwloc<span class="w"> </span>...
</pre></div>
</div>
<div class="admonition danger">
<p class="admonition-title">Danger</p>
<p>Be very, very careful when overriding <code class="docutils literal notranslate"><span class="pre">configure</span></code>’s
default search behavior for these libraries.  Remember the critical
requirement: that PMIx infrastructure and applications load
<em>exactly one copy</em> of each support library.  For simplicity, it may
be desirable to ensure to use exactly the support libraries that
PMIx was compiled and built against.</p>
<p>For example, using the PMIx installed from the sample
<code class="docutils literal notranslate"><span class="pre">configure</span></code> line (above), you may want to prefix your run-time
linker search path (e.g., <code class="docutils literal notranslate"><span class="pre">LD_LIBRARY_PATH</span></code> on Linux) with
<code class="docutils literal notranslate"><span class="pre">$HOME/pmix-install/lib:/opt/libevent/lib:/opt/hwloc/lib</span></code>.
This will ensure that the linker finds
the support libraries used by your PMIx installation tree,
even if other copies of the same support libraries are present
elsewhere on your system.</p>
</div>
</div>
</div>


           </div>
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="compilers-and-flags.html" class="btn btn-neutral float-left" title="5.5. Specifying compilers and flags" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="configure-cli-options/index.html" class="btn btn-neutral float-right" title="5.7. configure command line options" 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, The OpenPMIx Community.</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>