Keynote by Michael Wong, Codeplay
C++ 17 has added the Parallelism TS which contains parallel Algorithms. But this is only the beginning. The Concurrency TS already contains futures. But all this is only for CPUs. What people don’t know is that when married with Parallelism with the linchpin of executors being worked on now, it can form the basis of Massive Parallel Dispatch for Heterogeneous Computing for C++.
Current semiconductor trends show a major shift in computer system architectures towards heterogeneous systems that combine a CPU with other processors such as GPUs, DSPs and FPGAs; that work together, performing different tasks in parallel. This shift has brought a dramatic change in programming paradigms in the pursuit of a common language that will provide efficiency and performance portability across these systems. A wide range of programming languages and models including OpenMP has emerged over the last decade, all with this goal in their sights.
This new world of heterogeneous systems brings with it many new challenges for the C++ community and for the language itself, and if these were to be overcome then C++ would have the potential to standardize the future of heterogeneous programming. In fact this work has already begun in SG14 in form of a mandate to support massive parallel dispatch for heterogeneous devices in the C++ standard using recent models such as SYCL and HPX. A recent approach to solving these challenges comes in the form of SYCL, a shared-source C++ programming model for OpenCL. SYCL takes a very different approach from many before it, in that it is specifically designed to be standard C++ without any extensions to the language.