#include "pme_spline_work.h"
#include "pme_spread.h"
+//NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
bool g_allowPmeWithSyclForTesting = false;
bool pme_gpu_supports_build(std::string* error)
*
* \todo Remove after #3927 is done and PME is fully enabled in SYCL builds.
*/
+//NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
extern bool g_allowPmeWithSyclForTesting;
namespace gmx
}
}
- if (simulationWork.useGpuPme && simulationWork.useCpuPmePpCommunication)
+ if ((simulationWork.useGpuPme && simulationWork.useCpuPmePpCommunication)
+ || (!runScheduleWork->stepWork.useGpuFBufferOps))
{
- // The PME forces were recieved to the host, and reduced on the CPU with the rest of the
- // forces computed on the GPU, so the final forces have to be copied back to the GPU
- stateGpu->copyForcesToGpu(f.view().force(), AtomLocality::Local);
- }
- else if (!runScheduleWork->stepWork.useGpuFBufferOps)
- {
- // The buffer ops were not offloaded this step, so the forces are on the
- // host and have to be copied
+ // The PME forces were recieved to the host, and reduced on the CPU with the
+ // rest of the forces computed on the GPU, so the final forces have to be copied
+ // back to the GPU. Or the buffer ops were not offloaded this step, so the
+ // forces are on the host and have to be copied
stateGpu->copyForcesToGpu(f.view().force(), AtomLocality::Local);
}
const bool doTemperatureScaling =