SOLLVE

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.

Project Details

OpenMP is a popular tool for on-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.

Principal Investigator(s):

Sunita Chandrasekaran, Brookhaven National Laboratory/University of Delaware

Collaborators:

Argonne National Laboratory, Brookhaven National Laboratory, Oak Ridge National Laboratory, Lawrence Livermore National Laboratory, Georgia Institute of Technology, University of Delaware

Progress to date

  • The SOLLVE team introduced substantial extensions to the OpenMP 5, 5.0, 5.1, and 6.0 specifications, including features that support sequential loop optimizations and interoperability with native accelerator programming models and facilitate the movement of complex data structures to accelerators.
  • The team designed and implemented many enhancements for the LLVM compiler and OpenMP runtime implementation, including optimizations for parallel regions, asynchronous offloading support, and data movement optimization. Furthermore, SOLLVE members improved the interoperability of the BOLT runtime with several MPI implementations and provided new data locality and scheduling heuristics.
  • The team continues to expand the verification and validation suite to cover more elements of the OpenMP standard and more application use cases. It currently covers most features of OpenMP 4.5, 5.0, and 5.1 will soon be working with 6.0 features.

National Nuclear Security Administration logo U.S. Department of Energy Office of Science logo