Set up build with hipSYCL
authorAndrey Alekseenko <al42and@gmail.com>
Tue, 2 Mar 2021 07:30:21 +0000 (07:30 +0000)
committerMark Abraham <mark.j.abraham@gmail.com>
Tue, 2 Mar 2021 07:30:21 +0000 (07:30 +0000)
commit1a21c4596d1548734f3991f812f6ea742796c51a
tree1f08cda6f8961f8779de7907684c4a8bdf541299
parent556cd68d130935667e5dd4046de5c80bc433c6d9
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:
admin/gitlab-ci/gromacs.matrix.gitlab-ci.yml
admin/gitlab-ci/gromacs.matrix/gromacs.hipsycl-dev.gitlab-ci.yml [new file with mode: 0644]
cmake/gmxManageSYCL.cmake
src/config.h.cmakein
src/gromacs/gpu_utils/device_stream_sycl.cpp
src/gromacs/gpu_utils/gmxsycl.h
src/gromacs/gpu_utils/gpueventsynchronizer_sycl.h
src/gromacs/gpu_utils/sycl_kernel_utils.h [new file with mode: 0644]
src/gromacs/hardware/device_management_sycl.cpp
src/gromacs/mdlib/CMakeLists.txt
src/gromacs/mdlib/tests/leapfrogtestrunners.h
src/gromacs/nbnxm/sycl/nbnxm_sycl_kernel.cpp
src/gromacs/nbnxm/sycl/nbnxm_sycl_kernel_pruneonly.cpp
src/gromacs/nbnxm/sycl/nbnxm_sycl_kernel_utils.h