Fix clang-tidy warnings in pme and sim_utils
authorArtem Zhmurov <zhmurov@gmail.com>
Fri, 24 Sep 2021 09:22:09 +0000 (12:22 +0300)
committerArtem Zhmurov <zhmurov@gmail.com>
Fri, 24 Sep 2021 09:22:09 +0000 (12:22 +0300)
1. The global non-const variable was temporary introduced to able to
   test the PME SYCL spread kernel independently of the rest of the PME
   (f190fa59b4a72390b2aea2e74b4960941098ce4d). NOLINT should be
   temporary fix as this variable will go away once the rest of PME
   is implemented in SYCL.
2. The conditionals in sim_utils wrap the same copy operation after
   4d38a0d65839f951bf275e465f8fb65a35b60b8d. So these conditional can
   now be combined.

src/gromacs/ewald/pme.cpp
src/gromacs/ewald/pme.h
src/gromacs/mdrun/md.cpp

index fe65e9d6e3168973d4c59bb2d439b0cb25074775..4260cac22ce5ea242dc28c3fa128e59d3f5a34df 100644 (file)
 #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)
index 0576e51b1976e548b71406b44d0ae834ba61a21e..93145d4e1e9807b6aa92197e912eff175e9a2c6f 100644 (file)
@@ -85,6 +85,7 @@ class GpuEventSynchronizer;
  *
  * \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
index 57fb86149a639299c94c1423d734c1acacab1ce5..1e7479b3046a212d2e0bf806c8fd3a476b68b633 100644 (file)
@@ -1506,16 +1506,13 @@ void gmx::LegacySimulator::do_md()
                     }
                 }
 
-                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 =