The recent advancements in High Performance Computing and ongoing research to reach Exascale has been heavily supported by introducing dedicated massively parallel accelerators. Programmers wishing to maximize utilization of current supercomputers are required to develop software which not only involves scaling across multiple nodes but are capable of offloading data-parallel computation to dedicated hardware such as graphic processors. Introduction of new types of hardware has been followed by developing new languages, extensions, compilers and libraries. Unfortunately, none of those solutions seem to be fully portable and independent from specific vendor and type of hardware. HPX.Compute, a programming model developed on top of HPX, a C++ standards library for concurrency and parallelism, uses existing and proposed C++ language and library capabilities to support various types of parallelism. It aims to provide a generic interface allowing for writing code which is portable between hardware architectures. We have implemented a new backend for HPX.Compute based on SYCL, a Khronos standard for single-source programming of OpenCL devices in C++. We present how this runtime may be used to target OpenCL devices through our C++ API. We have evaluated performance of new implementation on graphic processors with STREAM benchmark and compare results with existing CUDA-based implementation.
[1]
Patrick Diehl,et al.
Closing the Performance Gap with Modern C
,
2016,
HiPC 2016.
[2]
Matt Martineau,et al.
GPU-STREAM v2.0: Benchmarking the Achievable Memory Bandwidth of Many-Core Processors Across Diverse Parallel Programming Models
,
2016,
ISC Workshops.
[3]
Jingyue Wu,et al.
gpucc: An open-source GPGPU compiler
,
2016,
2016 IEEE/ACM International Symposium on Code Generation and Optimization (CGO).
[4]
Kevin Skadron,et al.
Scalable parallel programming
,
2008,
2008 IEEE Hot Chips 20 Symposium (HCS).
[5]
Ralph Potter,et al.
Kernel composition in SYCL
,
2015,
IWOCL.
[6]
Jakub Szuppe,et al.
Boost.Compute: A parallel computing library for C++ based on OpenCL
,
2016,
IWOCL.