Exascale architectures are expected to feature a dramatic increase in the amount of intra-node threading, greater heterogeneity, and more complex hierarchical memory subsystems. OpenMP is a directive-based standard specification for programming shared-memory and accelerator systems used by many exascale applications for in-node programming. The SOLLVE project is advancing the OpenMP specification and its implementations to address exascale application challenges, including programmability gaps for core technologies, such as accelerator support, interoperability with message passing interface (MPI), and the data migration of complex data structures.
OpenMP is a popular tool for in-node programming that is supported by a strong community of vendors, national labs, and academic groups. Most Exascale Computing Project (ECP) applications include OpenMP as part of their strategy for reaching exascale levels of performance. Several application teams identified gaps in OpenMP functionality with respect to the movement of complex data structures to and from accelerator memories, some required compatibility with the latest C++ and Fortran standards, and all expected the ability to generate performance portable code. Several of these requirements were addressed in the most recent version of OpenMP. The SOLLVE project continues to work with application partners and members of the OpenMP language committee to extend the OpenMP feature set to meet ECP application needs, especially with regard to accelerator support.
The SOLLVE team focuses on delivering a high-quality robust implementation of standard compliant OpenMP, possibly with extensions, as part of the LLVM compiler infrastructure; developing the LLVM BOLT runtime system to exploit lightweight threading for scalability and interoperability with MPI; and creating a validation suite to ensure that quality implementations of OpenMP are being delivered. The team directly interacts with end users to understand and consolidate their application software needs, allowing users to drive and prioritize features in the OpenMP standard and its implementations. To deliver appropriate mechanisms for closing functionality and performance gaps, the SOLLVE team also engages with key vendors and the broader OpenMP community. Through these different kinds of interactions, SOLLVE ensures that the best possible solutions to exascale application challenges will be adopted in new versions of the standard and its implementations.