Using SYCL to write code for many devices
SYCL is a C++ abstraction layer for heterogeneous computing. It makes writing code for a range of devices, including GPUs and other accelerators such as FPGAs, fairly simple by abstracting the core concepts. There are two parts to a SYCL application: the first being the source code, which is written in standard C++, with the help of the SYCL library. During compilation, the code that might be executed on devices is written into the binary in a form that allows it to be runtime-compiled for the requested device. (For instance, it might be compiled into an intermediate representation such as SPIR-V and placed in the binary for the device driver to compile further for the specific device.) The second component of a SYCL application is the runtime and device drivers. For instance, OpenCL can be used as a backend for SYCL applications. Intel provides its own backend called Level Zero.
SYCL applications need to be compiled using a SYCL-compatible...