Recent trends indicate that future computing systems will be composed by a group of heterogeneous computing devices, including CPUs, GPUs, and other hardware accelerators. These devices provide increased processing performance, however, creating efficient code for them may require that programmers manage memory assignments and use specialized APIs, compilers, or runtime systems, thus making their programs dependent on specific tools. In this scenario, SYCL is an emerging C++ programming model for OpenCL that allows developers to write code for heterogeneous computing devices that are compatible with standard C++ compilation frameworks. In this paper, we analyze the performance and programming characteristics of SYCL, OpenMP, and OpenCL using both a benchmark and a real-world application. Our performance results indicate that programs that rely on available SYCL runtimes are not on par with the ones based on OpenMP and OpenCL yet. Nonetheless, the gap is getting smaller if we consider the results reported by previous studies. In terms of programmability, SYCL presents itself as a competitive alternative to OpenCL, requiring fewer lines of code to implement kernels and also fewer calls to essential API functions and methods.
[1]
Tim Beattie.
Investigation of the SYCL for OpenCL Programming Model
,
2015
.
[2]
S. M. Doherty,et al.
Seismic Data Analysis: Processing, Inversion, and Interpretation of Seismic Data
,
2000
.
[3]
Angelos Trigkas.
Investigation of the OpenCL SYCL Programming Model
,
2015
.
[4]
Basilio B. Fraguela,et al.
Improving OpenCL Programmability with the Heterogeneous Programming Library
,
2015,
ICCS.
[5]
J. Xu.
OpenCL – The Open Standard for Parallel Programming of Heterogeneous Systems
,
2009
.
[6]
Jaehoon Jung,et al.
Bridging OpenCL and CUDA: a comparative analysis and translation
,
2015,
SC15: International Conference for High Performance Computing, Networking, Storage and Analysis.
[7]
Aaftab Munshi,et al.
The OpenCL specification
,
2009,
2009 IEEE Hot Chips 21 Symposium (HCS).
[8]
Matthias Hauswirth,et al.
CLOP: a multi-stage compiler to seamlessly embed heterogeneous code
,
2015,
GPCE.