Multi-architecture implementation of Spectral Difference Methods (SDM) for compressible flows using performance portable programing tools (c++ kokkos)
One of the most difficult techonological challenge associated with the so called exascale race is the design of an hardware architecture much more energy efficient than usual ones. For at least the next five years, all the competitors (US, China, Japan, Europe) are putting hard work at designing homegrown processor technology (e.g. 64bit ARM CPU in Japan or Sunway processor in China). The diversity of already available as well as coming processor architectures constitutes a heavy burden for high performance and parallel software developper at choosing the right software programing tools. While directive based programing approaches (OpenMP / OpenACC) are well suited to porting large legacy codes, new library based programing tools, mostly written in C++, provide an alternative approach for designing hardware-aware high-level parallel applications.
In this talk, I will report on using the C++ Kokkos library (and MPI) for designing a new multi-architecture performance portable implementation of the high-order spectral difference methods (SDM) numerical schemes familly used in compressible hydrodynamics. I will first introduce the Kokkos library in the context of other performance portable tools, the I’ll give some details of our implementation, example of applications in astrophysical context as well as show performance measurements on several hardware platforms (Intel Skylake, KNL, ARM ThunderX2 and several Nvidia GPU processors).