ROOT, cling and SYCL

Hello dev’s,

I was wondering what are the team’s thought / plans with respect to SYCL. Is there a potential future support of it within ROOT / cling envisioned? Or only later after it is shown whether the SYCL project is widely accepted / used?


Thanks for asking that great question - I am wondering the same since a while.

I am continuing to hope that “someone” will show up who will implement this. I believe that this would be a great selling point for SYCL, “this” being cling support, which in turn means Jupyter support, for instance!

Cheers, Axel.

1 Like

Hi, I remember @SimeonEhrig mentioned something about supporting HIP. I guess supporting HIP would be a step closer to support SYCL as our backends will be generic enough to plug in a new flavor of that type.

Nice info! I just found that he already implemented a Cling-CUDA Jupyter notebook: GTC 2020: CUDA C++ in Jupyter: Adding CUDA Runtime Support to Cling | NVIDIA Developer

@vvassilev you are right, I already thought about what should be necessary to implement HIP. I think it is not too much work to achieve the same level of support as CUDA. The compiler pipelines should be very similar. After looking at the documentation @ferhue sent, I think Sycl also has a similar compiler pipeline. I don’t think there is a conceptual show stopper to doing this. There is just one big potential problem. We need to check which Clang version support Sycl good enough.
In the case of CUDA, it needs at least Clang 3.8 for CUDA support. Clang 9 fixed some bugs in simple language constructs that I discovered (e.g. problems with lambdas and templates), and Clang 11 or 12 fixes a separate compilation bug that is very important to enable some features in Cling. So we need to check if Cling is already using a Clang version that has good Sycl support.

But one point may make it easier to implement Sycl support than CUDA support. If I’m right, the whole compiler pipeline is open source except for the device-specific bytecode generation. This is really helpful to solve problems and integrate all tools, which is necessary for good performance.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.

I found this repository by Intel that implements SYCL support for cling. I have tried it to build it, but it seems it’s broken and outdated (some problem with ocl-headers cloning), due to the many recent changes both in llvm and in cling:

This topic was automatically closed after 10 days. New replies are no longer allowed.