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

By Scott Gibson

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.

Christian Trott of Sandia National Laboratories

Christian Trott of Sandia National Laboratories

In the latest episode of the Let’s Talk Exascale podcast, Christian Trott of SNL shares insights about development of the Kokkos Core Performance Portability Programming Model, an effort that he leads. The interview took place in Denver at SC19: The International Conference for High Performance Computing, Networking, Storage, and Analysis.

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.”