An Alternative to OpenMP and an On-Ramp to Future C++ Standards

Christian Trott from Sandia National Labs

In this edition of Let’s Talk Exascale, Christian Trott of Sandia National Laboratories shares insights about Kokkos, a programming model for numerous Exascale Computing Project applications.

Kokkos is a programming model being developed to deliver a widely usable alternative to programming in OpenMP. It is expected to be easier to use and provide a higher degree of performance portability, while integrating better into C++ codes.

Initially conceived almost ten years ago at Sandia National Laboratories (SNL), which is sponsored by the National Nuclear Security Administration, Kokkos has become the primary method of porting applications to new architectures there. The model is now co-developed by an extended US Department of Energy Exascale Computing Project (ECP) team, with developers at four additional laboratories.

Trott and his team aim to have Kokkos-based applications simply recompile on the planned Aurora and Frontier exascale machines and run with good performance. “To that end, we need to write new backends since neither machine can be programmed with CUDA,” Trott said. The backends are the software layers below Kokkos.

Along with bringing an alternative to programming in OpenMP, the team wants to provide an on-ramp to future C++ standards by aligning and influencing the C++ standard itself. “The Kokkos team provides arguably the most robust representation of HPC interests that the C++ committee has experienced in a long time,” Trott said. “Either as main authors or contributors, we have many proposals in flight that address some of the core concerns for HPC applications: parallel execution, data management, and linear algebra.”

Kokkos is the programming model for numerous ECP applications, and it is the only widely used alternative to pragma-based programming with OpenMP for codes that need to target both Aurora and Frontier.

Adoption of Kokkos has been pretty strong,” Trott said. “About 200 developers, two-thirds of whom are from outside Sandia, are on our Slack channel, and approximately 150 projects are based on Kokkos. Even a number of commercial companies have started looking at Kokkos as the way forward.”

A distributed development team environment and a focus on process improvement will characterize the future of the Kokkos effort. “We are getting used to our new reality as a truly distributed team—half of our people are not at Sandia anymore,” Trott said. “And we are strengthening our already pretty good software engineering processes so that we can sustain the community even with thousands of developers from all over the world using Kokkos. Software sustainability is one of our key mantras. We are also obviously working hard on getting robust support for upcoming architectures such as Intel Compute and AMD GPUs, but we also may need to start looking in earnest at support for FPGAs and other new chip types.”

Source: Scott Gibson at The Exascale Computing Project

Download the MP3 * Subscribe to Let’s Talk Exascale

Sign up for our insideHPC Newsletter

Comments

  1. Paul D. Hahn says

    HPC folks need to take a look at libOCCA (download from github). It has a C-like parallel programming language called “OKL” that you write once. The libOCCA API generates (JIT) code that works on all supported backends without the C/C++ HPC application programmer having to write backend-specific code. Namely, the libOCCA API abstracts away the runtime-selected backend, hiding the details from the application code. Its backends include OpenMP, OpenCL, CUDA, and Serial. There is also an MPI backend under development. It is mainly for use on Linux at this time.