Productive, Performance Portable Programming of HPC Applications

Abstract

High-performance computing (HPC) is often perceived as a matter of making demanding applications running as fast as possible on large-scale systems, regardless the required programming effort. Not true: emerging large-scale applications are complex to develop and maintain, making programmability of HPC systems a major concern.

In this tutorial, we will overview programming techniques to facilitate the development of parallel applications, able to seamlessly scale from laptops, for fast prototyping, to large HPC systems for deployment. We will introduce two state-of-the-art productivity libraries, which orthogonally support high performance software development. We will discuss the Kokkos ecosystem, providing a hardware agnostic infrastructure for performance portable programming. We will then deep dive into the SHAD library, a collection of distributed containers and algorithms for scaling out on large HPC systems, with familiar interfaces and limited programming effort.