Massive Parallel Dispatch for Heterogeneous Computing in C++ for Self-Driving Cars (Michael Wong, SECR-2016)
Материал из 0x1.tv
- Michael Wong
As Chair of C++ Standard’s SG14 where the gamers, financial traders, and embedded device programmers have been demanding a heterogeneous programming model, I have been studying programming models that can show us learning experience that enables a future ISO C++ to support heterogeneous devices. The number is actually numerous. My search has brought me through SYCL, HPX, Agency, HCC, OpenMP, OpenACC, OpenCL, C++ AMP, Halide, CUDA, Kokkos, Raja and many others. Yet as performance and power-efficiency become the holy grail of modern C++ applications, the hardware solutions that deliver them differ greatly in architecture decisions and designs. The combination of CPUs, GPUs, FPGAs and custom domain specific hardware is gaining a lot of momentum. In view of this, C++ programming techniques and features are changing as well. Modern C++ standards are enabling more and more parallelism and heterogeneity in the library and language features. This talk will compare many of the most popular model in terms of their memory model, data movement, and execution abstraction.
This talk will cover the emerging C++ parallelism and concurrency technical specifications, some of which is in C++17, while the rest in coming in C++20/23. We will discuss how executors is a way to unify execution resources and parallel control constructs. Executors enable us to demonstrate how future heterogeneous computing can be added to ISO C++ and one such model is Khronos’ SYCL and SYCL ParallelSTL that enable C++ libraries to be extended using standard C++ language features and libraries. SYCL is a system that provides the building blocks for building such C++ libraries, where the gap between the hardware agnostic C++ features and the C++ abstractions of the hardware features can be bridged. SYCL has also been released as a free to download Community Edition called ComputeCPP to help you build higher abstractions for neural network, and machine vision, all leading to the ability to program self-driving cars. The Sunday Mastercourse will offer a hands-on demonstration of SYCL and Parallel STL, as well as further description of Concurrency.