The C++ Direction Group has set a future direction for C++ and includes recommendation for C++ in the short and medium term. It will have immediate impact on what will enter C++20, and beyond. First half of this talk will devote to the issue of 3Ps: Performance, Portability and Productivity. The other parts will consider the C++ Directions Group’s description of where future C++ is heading as a member of the DG. It also includes a guidance towards Heterogeneous C++.
The SYCL standard from the Khronos Group is a strong candidate to implement this upcoming C++ standard as are many other C++ frameworks from DOE, and HPX for the distributed case. One of the core ideas of this standard is that everything must be standard C++, the only exception being that some feature of C++ cannot be used in places that can be executed on an OpenCL device, often due to hardware limitation.
Implementing Heterogeneous C++ is like battling the four Horsemen of the Apocalypse:
- Data Movement
- Data Locality
- Data Layout
- Data Affinity
The rest of this talk presents some of the challenges and solutions to implement a Heterogeneous C++ standard in clang based on our implementation of Khronos's SYCL language with Codeplay's ComputeCpp compiler and my previous experience with OpenMP/OpenACC, with the fast growth of C++ and clang being a platform of choice to prototype many of the new C++ features. We describe the major issues with ABI for separate compilation tool chain that comes from non-standard layout type of lambdas, as well as the issues of data addressing that comes from non-flat and possibly non-coherent address space.
About the Speaker:
Michael Wong is the Vice President of Research and Development at Codeplay Software, a Scottish company that produces compilers, debuggers, runtimes, testing systems, and other specialized tools to aid software development for heterogeneous systems, accelerators and special purpose processor architectures, including GPUs and DSPs.