Reference Implementation of the Process Management Interface Exascale (PMIx) standard

View the Project on GitHub

Downloads   Privacy Policy   Security Policy   Publications   Community   Contribute

Debugging vs. Optimized Builds

If you are building the PMIx Reference RunTime Environment (PRRTE) from a Git checkout, the default build includes a lot of debugging features. This happens automatically when when configure detects the hidden “.git” Git meta directory (that is present in all Git checkouts) in your source tree, and therefore activates a number of developer-only debugging features in the PMIx code base.

By definition, debugging builds will perform much slower than optimized builds of the server. You should NOT conduct timing tests or try to run production performance numbers with debugging builds.

If you wish to build an optimized version of the server from a developer’s checkout, you have two main options:

Building PRRTE

PRRTE requires three external packages (libevent, hwloc, and PMIx) to be supplied for it to build and execute. Details on the necessary versions are provided here. The procedure for building a usable configuration is as follows:

With all packages built and installed, ensure that you have PRRTE’s install location prepended to your PATH and LD_LIBRARY_PATH. Compile any PMIx-based applications using the PRRTE-provided pcc wrapper compiler. Execution of an application is then done as described here.

Building Open MPI for use with PRRTE

Open MPI contains embedded versions of several libraries, including PMIx. While you may be able to use PRRTE to run Open MPI applications that are linked against their internal versions of libevent, hwloc, and PMIx, there is a chance you may run into conflicts. Executing OMPI apps against PRRTE is lightly tested using OMPI releases prior to OMPI v4.0 and should be considered experimental until we receive better validation. However, the OMPI master branch includes the ability to build OMPI against external copies of the common packages and to execute directly against PMIx. This removes the ORTE runtime from the OMPI application and provides a cleaner PMIx interface.

Configuring and building Open MPI for this purpose mirrors that for building PRRTE:

Although the OMPI application is not linked against PRRTE libraries, use of the external PMIx, libevent, and hwloc libraries is highly recommended to ensure proper operation. Note that testing of OMPI against PRRTE is performed using the recommended configuration, and therefore alternative configurations should be considered experimental until validated.