hipSYCL – an implementation of SYCL over NVIDIA CUDA/AMD HIP

The goal of the hipSYCL project is to develop a SYCL 1.2.1 implementation that is built upon NVIDIA CUDA/AMD HIP.

hipSYCL provides a SYCL interface to NVIDIA CUDA and AMD HIP. hipSYCL applications are then compiled with the regular vendor compilers (nvcc for nvidia and hcc for AMD), and hence can enjoy full vendor support.

hipSYCL provides a modern C++ API, including automatic resource management via reference counting semantics (see the SYCL spec for more details). No more worrying about missing cudaFree() calls.

Portability. The hipSYCL input language is (at the moment) a slightly modified, annotated SYCL (see the corresponding section below, support for regular SYCL is on the way). This input language can be turned into regular SYCL with simple #defines. Note that there is also experimental support for ingesting regular SYCL code via a clang-based source-to-source transformation step.

A hipSYCL application can hence run
via hipSYCL:
– on AMD devices via AMD HIP on the ROCm platform
– on NVIDIA devices via CUDA