Post-modern C++ and C++17 abstractions for heterogeneous computing with Khronos OpenCL SYCL
Intervenant(s) : Ronan Keryell (Xilinx Research)
Computing architectures nowadays are huge multi-processor system-on-chips with different kind of processors, GPU, configurable specific accelerators (video CODEC...), reconfigurable programmable logic (FPGA), various hierarchies of memory and memory interfaces, configurable IO and network support, security support, power control, etc. High-performance applications may use a hierarchy of such system up to fill up a full-scale data-center.
So the programmer is facing now a fractal architecture, demanding also more and more control for power efficiency. This tends to require a dense fractal set of skills and tools.
OpenCL SYCL C++ is a new open standard from Khronos aiming at solving some of the programming issues related to heterogeneous computing. This pure C++17 domain-specific embedded language allows the programmer to write single-source C++17 host code with accelerated code expressed as functors. The data accesses are described with accessor objects that implicitly define a task graph that can be asynchronously scheduled on a distributed-memory system including several CPU and accelerators.
Since this programming model is quite generic, we will end by introducing some extensions we study at Xilinx to optimize FPGA usage with the concept of pipes to define 1-to-1 connections between kernels in the task graph without requiring expensive memory bandwidth.
As this talk is focused on C++, we will also introduce some interesting features of C++17 and other C++ frameworks to address the issue of heterogeneous computing.
Emmanuel.Chailloux (at) nulllip6.fr