

Hybrid systems have been massively adopted in high performance clusters and scientific applications. The latest Top500 [1] HPC list shows an increased number of heterogeneous processing elements in the latest systems. This trend continues to grow, and it is expected that future Exascale systems will include a number of hybrid cores (GPUs, FPGAs and others). In order to face these new complex architectures, scientists and engineers need more powerful and flexible programming environments. New programming environments have been designed to program these new hybrid systems. However, existing libraries and scientific applications are yet to be ported, and the effort of doing so is noticeable. Members of the heterogeneous programming community, including both academia and industry, are working under the umbrella of the Khronos Group to design new programming environments for these platforms. One of the outcomes of this work has been SYCL [2]: A C++ cross-platform abstraction layer that builds on the underlying concepts, portability and efficiency of OpenCL. SYCL offers intuitive single-source development for accelerators using C++ templated functions, and can greatly facilitate porting existing C++ code to heterogeneous architectures. In this work we present the main features of the SYCL interface that had been added to complement OpenCL [3] towards the usage on more complex and high-level codes.