File: pmix-and-prrte.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 (202 lines) | stat: -rw-r--r-- 12,142 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
<!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.3. The role of PMIx and PRRTE &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.4. Scheduling processes across hosts" href="scheduling.html" />
    <link rel="prev" title="10.2. Prerequisites" href="prerequisites.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 current"><a class="current reference internal" href="#">10.3. The role of PMIx and PRRTE</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#pmix">10.3.1. PMIx</a></li>
<li class="toctree-l3"><a class="reference internal" href="#prrte">10.3.2. PRRTE</a></li>
</ul>
</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"><a class="reference internal" href="unusual.html">10.11. Unusual jobs</a></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.3. </span>The role of PMIx and PRRTE</li>
      <li class="wy-breadcrumbs-aside">
            <a href="../_sources/launching-apps/pmix-and-prrte.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="the-role-of-pmix-and-prrte">
<span id="label-running-role-of-pmix-and-prte"></span><h1><span class="section-number">10.3. </span>The role of PMIx and PRRTE<a class="headerlink" href="#the-role-of-pmix-and-prrte" title="Permalink to this heading"></a></h1>
<p>Prior versions of Open MPI were layered on top of the Open
Run-Time Environment (ORTE).  ORTE originally started as a small
portion of the Open MPI code base, but over time, ORTE effectively
spun off into its own sub-project.  ORTE ultimately evolved into the
<a class="reference external" href="https://openpmix.github.io/">Process Management Interface Exascale (PMIx) standard and
corresponding OpenPMIx software project</a>.
The OpenPMIx project then evolved its own <a class="reference external" href="https://github.com/openpmix/prrte">PMIx Reference Run-Time
Environment (PRRTE)</a> project.
PRRTE has effectively replaced ORTE in the Open MPI implementation.</p>
<p>Open MPI uses both of these external packages for its run-time system support.</p>
<p>Both PMIx and PRRTE have many configure- and run-time options.  Open
MPI attempts to hide most of these details from the end user, and
instead present a unified “everything is Open MPI” interface.  Open
MPI will translate configuration directives to PMIx and PRRTE as
relevant, hiding such minutia from the end-user.</p>
<p>This is an intentional design decision on the part of the Open MPI
developer community: HPC and MPI are complicated enough.  We do not
want to burden the average end user with needing to understand which
abstractions and configuration options belong to Open MPI vs. PMIx
vs. PRRTE.</p>
<p>Advanced users can peek into the PMIx and PRRTE internals and tweak
additional configuration settings if necessary, but we hope that that
will rarely be necessary.</p>
<div class="section" id="pmix">
<h2><span class="section-number">10.3.1. </span>PMIx<a class="headerlink" href="#pmix" title="Permalink to this heading"></a></h2>
<p>The <a class="reference external" href="https://pmix.org">Process Management Interface for Exascale (PMIx)</a> package is used by Open MPI for the management,
communication, and coordination of MPI processes with a back-end
run-time system.</p>
<p>The “back-end run-time system” may range from a low-infrastructure
system that simply uses <code class="docutils literal notranslate"><span class="pre">ssh</span></code> to remotely execute commands (with no
other infrastructure) to an environment with a full-featured resource
manager and scheduler such as Slurm, PBS/Pro/Torque, or LSF.</p>
<p>PMIx presents a unified API that hides many of the complexities of
communication with these back-end run-time environments.  Open MPI
uses the PMIx API to discover, communicate, and coordinate with any
supported back-end run-time system without needing to know the
intimiate details of that system.</p>
</div>
<div class="section" id="prrte">
<h2><span class="section-number">10.3.2. </span>PRRTE<a class="headerlink" href="#prrte" title="Permalink to this heading"></a></h2>
<p>The <a class="reference external" href="https://github.com/openpmix/prrte">PMIx Reference Runtime Environment</a> is, as its name implies, a
reference run-time environment that utilizes the PMIx API.  It mainly
provides run-time environment infrastructure for environments that do
not natively have them.  In practical terms, this typically means
providing infrastructure for non-scheduled environments that have no
concept of distributed scheduling, file staging, remote stdout/stderr
redirection, and only have <code class="docutils literal notranslate"><span class="pre">ssh</span></code> to execute commands on remote
nodes.</p>
<p>Open MPI uses PRRTE to deal with the practical issues of the back-end
run-time environment such as launching, monitoring, killing, and
reaping remote processes.</p>
</div>
</div>


           </div>
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="prerequisites.html" class="btn btn-neutral float-left" title="10.2. Prerequisites" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="scheduling.html" class="btn btn-neutral float-right" title="10.4. Scheduling processes across hosts" 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>