7.1 openmp - openpmix/openpmix GitHub Wiki

OpenMP/MPI Coordination Working Group

Overview

This working group is a community effort to think about, design and improve methods for OMP style parallelism to coordinate with message based parallelism. We are focusing on OpenMP, and MPI, because they are currently the two most popular defacto standards for these styles of parallelism.

Current State

The existing coordination between resource managers, job launchers, and each of these parallel paradigms involve top down decision making, and are implemented using environment variables at (or before) process creation. The coordination between MPI and OMP is almost non-existent, and usually involves trying not to break the other model while still trying to preserve all given requests.

Mission Statement

The primary objective of this working group is to develop mechanisms for improving the interoperability between different parallel runtimes, with special focus on interactions between MPI implementations and runtime systems underpinning other program models, such as OpenMP and similar threading/tasking models. A key motivation for this work is the growing need to employ thread-based tasking models in applications in order to realize maximal performance on both highly multi-core processors and architectures employing offload accelerators, as well as the increased use of progress threads within run-time systems themselves.

Areas of particular interest to the working group include:

  • improving the interoperability of MPI, OpenMP, and other run-times’ thread cpu and memory affinity mechanisms, including better support for applications making use of nested parallelism, and, in the case of Open MPI, OMP places;

  • providing mechanisms for MPI and other run-times present in an application to progress their internal state engines independently, irrespective of the application's use of these run-times (e.g. in a mixed MPI + OpenSHMEM application, a call to shmem_barrier_all won't impede progress on outstanding MPI messages);

  • providing mechanisms for potential thread sharing for those environment where MPI and other run-times require the use of progress threads to manage operations that cannot be offloaded to hardware.

The working group plans to use PMIx as the primary vehicle for facilitating interoperability of MPI, OpenMP, and other runtime systems, owing to its growing adoption by MPI and other HPC runtime systems as the interface between resource managers, parallel application launchers.

Current Use Cases

OpenMP only typical use cases

MPI only typical use cases

OpenMP + MPI hybrid typical use cases

Simple examples to demonstrate some typical use cases

Here we provide some simple examples with enough details to demonstrate compiling and running the above typical use cases.

⚠️ **GitHub.com Fallback** ⚠️