Set up build with hipSYCL
The kernel code is currently non-functional on NVIDIA/AMD hardware, but
the build itself is useful to ensure code portability.
- Disabled LeapFrog for hipSYCL. With `float3` being used in the host
code, it is easiest to just disable the integrator until #3312 is
resolved. This will have to be resolved in order to run full MD loop
on GPU with hipSYCL. See #3941.
- Some warnings from the compiler and include headers silenced.
- Workarounds for features not supported by hipSYCL are introduced.
- - Shuffles. Should work, but not tested. Hopefully, they will be
introduced in the mainline hipSYCL soon.
- - Barrier synchronization. Intel-specific extension to SYCL which can
be imitated fairly well with native OpenCL/CUDA calls, but is
stubbed very stupidly now. Proper solution will be done after #2527
and #3924 are resolved.
- CI jobs are added. The set of target device architectures is chosen
semi-arbitrarily, since the code is not being run yet anyway. Main
concern was to have both HIP and CUDA there.
Refs #3923.
14 files changed: