# Open MPI v5.0.4

The Open MPI Project is an open source implementation of the Message Passing Interface (MPI) specification that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers.

# Documentation locations

Documentation for Open MPI can be found in the following locations:

Open MPI version | Documentation location
--- | ---
v5.0.0 and later | Web: https://docs.open-mpi.org/ Included in tarball: `docs/html/index.html` Built in source tree (if Sphinx available): `docs/_build/html/index.html` Installed: `$docdir/html/index.html` (which defaults to: `$prefix/share/doc/openmpi/html/index.html`)
v4.1.x and earlier | See the legacy Open MPI FAQ and the README file in the source tarball. For example: v4.1.x README file v4.0.x README file

# Release announcements

The best way to hear about new Open MPI releases is via the low-volume announcement mailing list.

Additionally, if you are a downstream packager of Open MPI (e.g., you package Open MPI for an operating system distribution), you may wish to sign up for the low-volume packagers list.

# Table of contents

- 1. Quick start
- 2. Getting help
  - 2.1. Where to send?
  - 2.2. For problems building or installing Open MPI
  - 2.3. For problems launching MPI or OpenSHMEM applications
  - 2.4. For problems running MPI or OpenSHMEM applications
- 3. Release notes
  - 3.1. Changelog
  - 3.2. General notes
  - 3.3. Platform Notes
  - 3.4. Compiler Notes
  - 3.5. General Run-Time Support Notes
  - 3.6. MPI Functionality and Features
  - 3.7. OpenSHMEM Functionality and Features
  - 3.8. MPI Collectives
  - 3.9. OpenSHMEM Collectives
  - 3.10. Network Support
  - 3.11. Open MPI Extensions
- 4. Building and installing Open MPI
  - 4.1. Quick start: Installing Open MPI
  - 4.2. Downloading Open MPI
  - 4.3. Supported Systems
  - 4.4. Definitions
  - 4.5. Filesystem requirements
  - 4.6. VPATH builds
  - 4.7. Specifying compilers and flags
  - 4.8. Required support libraries
  - 4.9. `configure` command line options
  - 4.10. `configure` output summary
  - 4.11. `make` targets
  - 4.12. Installation location
  - 4.13. Installing custom components
  - 4.14. Updating or upgrading an Open MPI installation
  - 4.15. Advice for packagers
  - 4.16. Advice for System Administrators
- 5. Open MPI-specific features
  - 5.1. Open MPI profiling interface
  - 5.2. Open MPI extensions
  - 5.3. User-Level Fault Mitigation (ULFM)
  - 5.4. Open MPI Java bindings
- 6. Validating your installation
  - 6.1. Checking your Open MPI configuration
  - 6.2. Testing your Open MPI installation
- 7. Version numbers and compatibility
  - 7.1. Backward Compatibility
  - 7.2. Software Version Number
  - 7.3. Shared Library Version Number
  - 7.4. API and ABI Compatibility
- 8. The Modular Component Architecture (MCA)
  - 8.1. Terminology
  - 8.2. Setting MCA parameter values
  - 8.3. Displaying MCA parameter values
  - 8.4. Selecting which Open MPI components are used at run time
  - 8.5. Common MCA parameters
  - 8.6. MCA Parameter Changes Between Open MPI 4.x and 5.x
- 9. Building MPI applications
  - 9.1. Quick start: Building MPI applications
  - 9.2. Customizing wrapper compiler behavior
  - 9.3. Extracting flags from the wrapper compilers
  - 9.4. ABI compatibility to previous versions of Open MPI
  - 9.5. Removed MPI constructs
  - 9.6. Deprecation warnings while compiling MPI applications
  - 9.7. Building fully-static MPI applications
- 10. Launching MPI applications
  - 10.1. Quick start: Launching MPI applications
  - 10.2. Prerequisites
  - 10.3. The role of PMIx and PRRTE
  - 10.4. Scheduling processes across hosts
  - 10.5. Launching only on the local node
  - 10.6. Launching with SSH
  - 10.7. Launching with Slurm
  - 10.8. Launching with LSF
  - 10.9. Launching with PBS / Torque
  - 10.10. Launching with Grid Engine
  - 10.11. Unusual jobs
  - 10.12. Troubleshooting
- 11. Run-time operation and tuning MPI applications
  - 11.1. Environment variables set for MPI applications
  - 11.2. Networking support
  - 11.3. Running multi-threaded MPI applications
  - 11.4. Dynamically loading `libmpi` at runtime
  - 11.5. Calling fork(), system(), or popen() in MPI processes
  - 11.6. Fault tolerance
  - 11.7. Large Clusters
  - 11.8. Processor and memory affinity
  - 11.9. MPI-IO tuning options
  - 11.10. Tuning Collectives
  - 11.11. Benchmarking Open MPI applications
  - 11.12. Building heterogeneous MPI applications
- 12. Debugging Open MPI Parallel Applications
  - 12.1. Parallel Debugging Tools
  - 12.2. Open MPI Runtime Debugging Options
  - 12.3. Using Serial Debuggers to Debug Open MPI Applications
  - 12.4. Using Parallel Debuggers to Debug Open MPI Applications
  - 12.5. Application Output Lost with Abnormal Termination
  - 12.6. Using Memchecker
  - 12.7. Using Valgrind to Find Open MPI Application Errors
  - 12.8. Using MPIR-based tools with Open MPI
- 13. Developer’s guide
  - 13.1. Prerequisites
  - 13.2. GitHub, Git, and related topics
  - 13.3. Compiler Pickyness by Default
  - 13.4. Running `autogen.pl`
  - 13.5. Building Open MPI
  - 13.6. Open MPI terminology
  - 13.7. Source code
  - 13.8. Internal frameworks
  - 13.9. Manually installing the GNU Autootools
  - 13.10. Installing and running Sphinx (building the Open MPI docs)
  - 13.11. ReStructured Text for those who know Markdown
- 14. Contributing to Open MPI
  - 14.1. Open source contributions
  - 14.2. Closed source contributions
- 15. License
  - 15.1. Open MPI license
  - 15.2. Additional licenses
  - 15.3. Redistributed code
- 16. History of Open MPI
  - 16.1. Goals of the Open MPI Project
  - 16.2. Community
- 17. Open MPI manual pages
  - 17.1. Commands (section 1)
  - 17.2. MPI API manual pages (section 3)
  - 17.3. General information manual pages (section 7)
- 18. OpenSHMEM manual pages
  - 18.1. Commands (section 1)
  - 18.2. OpenSHMEM API manual pages (section 3)