[cling] Prototype SYCL support in ROOT
This Pull request:
Adds a prototype implementation of SYCL support for standalone Cling. It works for standalone Cling, but is work in progress and is not ready for merge.
Changes or fixes:
Checklist:
- [x] Clone AdaptiveCpp git repo instead of adding the whole AdaptiveCpp codebase to CLING (like clad)
- [x] Clean up CMakeLists:
- Currently, AdaptiveCpp is installed in a temporary directory to get include directories and acpp binaries for SYCL - now follows what is done for CLAD
- [x] Building with ROOT works now
- AdaptiveCpp requires LLVM be built with
-DLLVM_LINK_LLVM_DYLIB=ON, which unfortunately ROOT doesn't support. Tried to get this working but this causes a cascade of issues. See: https://github.com/root-project/root/issues/12156#issuecomment-1660324761 - Spent time trying various things, building AdaptiveCpp statically is what works. Some patches on top of adaptivecpp will be necessary
- Cling builds and works independently, so it can be used in notebooks.
- AdaptiveCpp requires LLVM be built with
- [x] Add test cases for SYCL
- [x] Investigate DPC++:
- DPC++ does not currently support JIT
To build, you need the flag:
-Dexperimental_adaptivecpp
- [x] tested changes locally
- [x] updated the docs (if necessary)
Root's AdaptiveCpp fork (for static LLVM build and build-time usability - for genvectorx): https://github.com/root-project/AdaptiveCpp
Related: https://github.com/root-project/root/pull/18461
This PR fixes #
Test Results
20 files 20 suites 3d 20h 45m 1s ⏱️ 3 662 tests 3 662 ✅ 0 💤 0 ❌ 71 518 runs 71 518 ✅ 0 💤 0 ❌
Results for commit 542df4c9.
:recycle: This comment has been updated with latest results.
LGTM for the interpreter/ changes. I didn't check the rest (CMake setup in particular)