Skip to main content
Event

SYCL Heterogeneous C++ and the Four Horsemen of Heterogeneous Computing

Presenter

Name: Michael Wong
Affiliation: Codeplay Software Limited, Edinburgh, Scotland
Date: September 30, 2019 10:00am - 11:00am

Abstract

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.

Sponsoring Organization

Computer Science and Mathematics Division Future Technologies Group