Extract nbnxm PairlistSets
[alexxy/gromacs.git] / src / gromacs / nbnxm / prunekerneldispatch.cpp
index a1beaf2ac9d177b667c46f041165b6e937b68651..76482e16479a5e241430d8b4e1efa17b0c94fd04 100644 (file)
 #include "gromacs/nbnxm/pairlist.h"
 #include "gromacs/utility/gmxassert.h"
 
+#include "pairlistsets.h"
 #include "kernels_reference/kernel_ref_prune.h"
 #include "kernels_simd_2xmm/kernel_prune.h"
 #include "kernels_simd_4xm/kernel_prune.h"
 
 void
-nonbonded_verlet_t::PairlistSets::dispatchPruneKernel(const Nbnxm::InteractionLocality  iLocality,
-                                                      const nbnxn_atomdata_t           *nbat,
-                                                      const rvec                       *shift_vec,
-                                                      const Nbnxm::KernelType           kernelType)
+PairlistSets::dispatchPruneKernel(const Nbnxm::InteractionLocality  iLocality,
+                                  const nbnxn_atomdata_t           *nbat,
+                                  const rvec                       *shift_vec,
+                                  const Nbnxm::KernelType           kernelType)
 {
     pairlistSet(iLocality).dispatchPruneKernel(nbat, shift_vec, kernelType);
 }
@@ -94,3 +95,12 @@ nonbonded_verlet_t::dispatchPruneKernelCpu(const Nbnxm::InteractionLocality  iLo
 {
     pairlistSets_->dispatchPruneKernel(iLocality, nbat.get(), shift_vec, kernelSetup_.kernelType);
 }
+
+void nonbonded_verlet_t::dispatchPruneKernelGpu(int64_t step)
+{
+    const bool stepIsEven = (pairlistSets().numStepsWithPairlist(step) % 2 == 0);
+
+    Nbnxm::gpu_launch_kernel_pruneonly(gpu_nbv,
+                                       stepIsEven ? Nbnxm::InteractionLocality::Local : Nbnxm::InteractionLocality::NonLocal,
+                                       pairlistSets().params().numRollingPruningParts);
+}