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.
All modern computing machines parallelize tasks—split and distribute them among multiple processing elements simultaneously—to run more quickly. However, most legacy code is written in older programming languages that do not intrinsically support parallel expression, such as C and older versions of C++ and Fortran. Furthermore, most scientific source code is written in a way that does not automatically permit safe parallel execution. Real-world scientific applications, such as biological models and solar physics, require code augmentation to run in parallel, especially on GPU-based supercomputer systems.
OpenMP is a community standard and programming system that helps enhance codes to enable parallelization, allowing them to run at scale on large systems. However, the challenge remains to compile this code to run on supercomputers.
The Exascale Computing Project (ECP) software project SOLLVE helps address this issue. SOLLVE promotes advances in the OpenMP standard and creates compiler implementations for OpenMP to help enable these large, historic scientific programs to run on supercomputers, providing solutions to exascale challenges. As OpenMP syntax modifies C/C++/Fortran code and SOLLVE-developed tools compile the enhanced OpenMP code—in other words, translates it into zeros and ones that a computer can understand—the result brings frequently used legacy code into the future of computing.
SOLLVE is a community-driven project. The team works with application developers to help determine their needs in order for their code to run better, faster, and more efficiently on exascale systems. Before an OpenMP specification is formed, any desired new features must be voted on, ratified, and approved by the OpenMP community, of which SOLLVE is an integral part.
For OpenMC—an ECP Monte Carlo neutron and photon transport code that aims to model the entire core of a nuclear reactor—SOLLVE helped deliver key kernel performance on multiple GPU platforms without user code changes via OpenMP GPU support capabilities. This is just one example of the community-driven implementation improvements SOLLVE has enabled.
Though certainly used by applications within ECP, SOLLVE tools are available to any interested application teams. SOLLVE tools have been well-received by the scientific community, and SOLLVE’s customer focus makes its tools crucial for industry vendors, who leverage SOLLVE’s investments within their own tools. SOLLVE’s primary goal is to help drive OpenMP design and adoption to optimize its functionality for exascale systems. With the latest version of OpenMP, OpenMP 6.0, set for release this year, SOLLVE will continue to provide critical capabilities beyond ECP.
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; 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.