From b6c516827c2fc651f8ab11b853a40638f430c947 Mon Sep 17 00:00:00 2001 From: Andrey Alekseenko Date: Thu, 7 Oct 2021 12:30:22 +0200 Subject: [PATCH] Activate GPU update support in SYCL build Set proper flags and conditionals when deciding GPU workload. Refs #3929, #3930, #3932. --- src/gromacs/mdlib/update_constrain_gpu_impl.cpp | 2 +- src/gromacs/mdrun/runner.cpp | 4 ++-- .../mdtypes/state_propagator_data_gpu_impl_gpu.cpp | 8 ++++---- src/gromacs/taskassignment/decidegpuusage.cpp | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/gromacs/mdlib/update_constrain_gpu_impl.cpp b/src/gromacs/mdlib/update_constrain_gpu_impl.cpp index 5931dea8c9..9b8d102d25 100644 --- a/src/gromacs/mdlib/update_constrain_gpu_impl.cpp +++ b/src/gromacs/mdlib/update_constrain_gpu_impl.cpp @@ -68,7 +68,7 @@ #include "gromacs/timing/wallcycle.h" #include "gromacs/topology/mtop_util.h" -static constexpr bool sc_haveGpuConstraintSupport = GMX_GPU_CUDA; +static constexpr bool sc_haveGpuConstraintSupport = GMX_GPU_CUDA || GMX_GPU_SYCL; namespace gmx { diff --git a/src/gromacs/mdrun/runner.cpp b/src/gromacs/mdrun/runner.cpp index 887e7ba709..43551e0fdf 100644 --- a/src/gromacs/mdrun/runner.cpp +++ b/src/gromacs/mdrun/runner.cpp @@ -203,8 +203,8 @@ static DevelopmentFeatureFlags manageDevelopmentFeatures(const gmx::MDLogger& md { DevelopmentFeatureFlags devFlags; - devFlags.enableGpuBufferOps = - GMX_GPU_CUDA && useGpuForNonbonded && (getenv("GMX_USE_GPU_BUFFER_OPS") != nullptr); + devFlags.enableGpuBufferOps = (GMX_GPU_CUDA || GMX_GPU_SYCL) && useGpuForNonbonded + && (getenv("GMX_USE_GPU_BUFFER_OPS") != nullptr); devFlags.enableGpuHaloExchange = GMX_MPI && GMX_GPU_CUDA && getenv("GMX_GPU_DD_COMMS") != nullptr; devFlags.forceGpuUpdateDefault = (getenv("GMX_FORCE_UPDATE_DEFAULT_GPU") != nullptr) || GMX_FAHCORE; devFlags.enableGpuPmePPComm = GMX_MPI && GMX_GPU_CUDA && getenv("GMX_GPU_PME_PP_COMMS") != nullptr; diff --git a/src/gromacs/mdtypes/state_propagator_data_gpu_impl_gpu.cpp b/src/gromacs/mdtypes/state_propagator_data_gpu_impl_gpu.cpp index e6db89f1a9..c08c8f5900 100644 --- a/src/gromacs/mdtypes/state_propagator_data_gpu_impl_gpu.cpp +++ b/src/gromacs/mdtypes/state_propagator_data_gpu_impl_gpu.cpp @@ -171,9 +171,9 @@ void StatePropagatorDataGpu::Impl::reinit(int numAtomsLocal, int numAtomsAll) reallocateDeviceBuffer(&d_f_, numAtomsAll_, &d_fSize_, &d_fCapacity_, deviceContext_); // Clearing of the forces can be done in local stream since the nonlocal stream cannot reach - // the force accumulation stage before syncing with the local stream. Only done in CUDA, - // since the force buffer ops are not implemented in OpenCL. - if (GMX_GPU_CUDA && d_fCapacity_ != d_fOldCapacity) + // the force accumulation stage before syncing with the local stream. Only done in CUDA and + // SYCL, since the force buffer ops are not implemented in OpenCL. + if ((GMX_GPU_CUDA || GMX_GPU_SYCL) && d_fCapacity_ != d_fOldCapacity) { clearDeviceBufferAsync(&d_f_, 0, d_fCapacity_, *localStream_); } @@ -334,7 +334,7 @@ void StatePropagatorDataGpu::Impl::copyCoordinatesToGpu(const gmx::ArrayRef