filmov
tv
CppCon 2018: Gordon Brown “A Modern C++ Programming Model for GPUs using Khronos SYCL”

Показать описание
—
—
Computer system architecture trends are constantly evolving to provide higher performance and computing power, to support an increasing demand for high-performance computing domains including AI, machine learning, image processing and automotive driving aids. The most recent being the move towards heterogeneity, where a system has more than one kind of processor working together in parallel. These kinds of systems are everywhere, from desktop machines and high-performance computing servers to mobile and embedded devices.
OpenCL is an open standard from the Khronos group which provides a low-level C API for compiling and offloading code to be executed on another heterogeneous architecture and moving data to and from the device. A more recent standard form the Khronos group; SYCL is a single source heterogeneous programming model which provides the performance portability of OpenCL with a high-level modern C++ programming interface.
SYCL allows users to write standard C++ code which is then executed on a range of heterogeneous architectures including CPUs, GPUs, DSPs, FPGAs and other accelerators. On top of this SYCL also provides a high-level abstraction which allows users to describe their computations as a task graph with data dependencies, while the SYCL runtime performs data dependency analysis and scheduling. SYCL also supports a host device which will execute on the host CPU with the same execution and memory model guarantees as OpenCL for debugging purposes, and a fallback mechanism which allows an application to recover from failure.
This talk will present the SYCL programming model. It will cover how to find an appropriate heterogeneous device to execute work on, how to defined data dependencies and construct task graphs using accessors and how to write C++ code which will execute on the device. It will cover other features of the interface including the host device, the fallback and templating device code. It will then present various ecosystem projects which are built on top of SYCL including Eigen / TensorFlow, Parallel STL and SYCBLAS.
—
Gordon Brown
—
*-----*
*-----*
—
Computer system architecture trends are constantly evolving to provide higher performance and computing power, to support an increasing demand for high-performance computing domains including AI, machine learning, image processing and automotive driving aids. The most recent being the move towards heterogeneity, where a system has more than one kind of processor working together in parallel. These kinds of systems are everywhere, from desktop machines and high-performance computing servers to mobile and embedded devices.
OpenCL is an open standard from the Khronos group which provides a low-level C API for compiling and offloading code to be executed on another heterogeneous architecture and moving data to and from the device. A more recent standard form the Khronos group; SYCL is a single source heterogeneous programming model which provides the performance portability of OpenCL with a high-level modern C++ programming interface.
SYCL allows users to write standard C++ code which is then executed on a range of heterogeneous architectures including CPUs, GPUs, DSPs, FPGAs and other accelerators. On top of this SYCL also provides a high-level abstraction which allows users to describe their computations as a task graph with data dependencies, while the SYCL runtime performs data dependency analysis and scheduling. SYCL also supports a host device which will execute on the host CPU with the same execution and memory model guarantees as OpenCL for debugging purposes, and a fallback mechanism which allows an application to recover from failure.
This talk will present the SYCL programming model. It will cover how to find an appropriate heterogeneous device to execute work on, how to defined data dependencies and construct task graphs using accessors and how to write C++ code which will execute on the device. It will cover other features of the interface including the host device, the fallback and templating device code. It will then present various ecosystem projects which are built on top of SYCL including Eigen / TensorFlow, Parallel STL and SYCBLAS.
—
Gordon Brown
—
*-----*
*-----*