Distributed and Heterogeneous Programming in C++ for HPC
Authors: Dr. Hal Finkel (Argonne National Laboratory)
Abstract: In response to the HPC requirements from CORAL/SUMMIT to achieve exascale performance, we will discuss the programming models that support heterogeneous programming in C and C++ and future standardization work toward that exascale goal. We will discuss research in this domain and consolidate usage experience with the aim of passing that experience to ISO C and C++.
There are a number of C++ frameworks for parallel programming, including HPX, KoKKos, Raja, C++AMP, HCC, Boost.Compute, CUDA, and more. SYCL from Khronos provides heterogeneous computing built on OpenCL and C++, and Codeplay has released ComputeCpp Community Edition.
Long Description: In response to the HPC requirements from CORAL/SUMMIT to achieve exascale performance through heterogeneous programming models for C++, and the interest in driving these models in ISO C++, we will discuss the programming models that have been designed to support heterogeneous programming in C and C++ with the aim toward future standardization.
Backed by an important community effort for more than five years, SYCL is a Khronos specification for heterogeneous computing built on top of OpenCL and C++. SYCL 1.2 was released in May 2015, and the current SYCL 2.2 specification was published in February 2016. With these specifications available, Codeplay is releasing their ComputeCpp Community Edition.
Many other models also exist, including HPX, KoKKos, Raja, C++AMP, HCC, Boost.Compute, and CUDA. This BoF will address the needs of the HPC community where a number of C++ frameworks have been developed for multi-threaded and distributed applications. The C++11/14/17 International Standards have introduced new tools for parallel programming, and the ongoing standardization effort is developing additional features that will enable support for heterogeneous and distributed parallelism into ISO C++ 20/23. This BoF is an ideal place to discuss research in this domain, consolidate usage experience, and share new directions to support new hardware and memory models with the aim of passing that experience to ISO C and C++.
This BoF is based on a set of successful tutorials and workshops from different conferences, such as the SYCL tutorial at Stanford University during IWOCL 2016 and the first SYCL workshop at PPoPP’16 as well as the Berkeley Heterogeneous C++ Summit in 2016. There is now also a workshop focused on this effort at IWOCL 2017, linking Khronos and ISO C++ standardization in a workshop called DHPCC++:
This BoF is targeted to developers of C++ based programming models for exascale research, users and designers of distributed and heterogeneous programming models for C/C++, ISO standard members, and DoE and worldwide research lab members (e.g. CERN, BSC, CSSC) with workloads in C/C++ looking for a native language solution. This includes users and designers of:
* Future Heterogeneous programming C/C++ proposals (SYCL, Kokkos, Raja, HPX, C++AMP, Boost.Compute, CUDA …)
* ISO C/C++ related proposals and developments including related concurrency, parallelism, coroutines, executors
* C/C++ programming models for OpenCL
* Language Design Topics such as parallelism model, data model, data movement, memory layout, target platforms, static and dynamic compilation
* Applications implemented using these models including Neural Network, machine vision, HPC, CFD as well as exascale applications
* C/C++ Libraries using these models
* Other C++ Frameworks such as Chombo, Charm++ C++ Actor Framework, UPC++ and similar
We will survey the audience on what C++ frameworks and tools they currently use, and what direction is needed in ISO C++, Khronos OpenCL/SYCL, and HSA to move forward toward standardizing distributed and heterogenous computing, instead of having multiple frameworks. We will also be able to communicate current standardization plans from the various specifications.
Conference Presentation: pdf
Birds of a Feather Index