Move the PmePPCommGpu initialization from forcerec to runner
authorArtem Zhmurov <zhmurov@gmail.com>
Fri, 21 Feb 2020 16:53:26 +0000 (17:53 +0100)
committerArtem Zhmurov <zhmurov@gmail.com>
Tue, 3 Mar 2020 22:50:47 +0000 (23:50 +0100)
Change-Id: I955c7c53bcee571c560b1efd8a4eed7bde4d42fc

src/gromacs/mdlib/forcerec.cpp
src/gromacs/mdlib/forcerec.h
src/gromacs/mdrun/runner.cpp

index d9fae031a65aed2ed4aac2676324c9e5b156f949..90e74a077df3f7e7d2aa098cb5d92512a6c7851e 100644 (file)
@@ -38,8 +38,6 @@
 
 #include "forcerec.h"
 
-#include "config.h"
-
 #include <cassert>
 #include <cmath>
 #include <cstdlib>
 #include "gromacs/utility/smalloc.h"
 #include "gromacs/utility/strconvert.h"
 
-/*! \brief environment variable to enable GPU P2P communication */
-static const bool c_enableGpuPmePpComms =
-        (getenv("GMX_GPU_PME_PP_COMMS") != nullptr) && GMX_THREAD_MPI && (GMX_GPU == GMX_GPU_CUDA);
-
 static std::vector<real> mk_nbfp(const gmx_ffparams_t* idef, gmx_bool bBHAM)
 {
     std::vector<real> nbfp;
@@ -935,7 +929,6 @@ void init_forcerec(FILE*                            fp,
                    const char*                      tabfn,
                    const char*                      tabpfn,
                    gmx::ArrayRef<const std::string> tabbfnm,
-                   const bool                       pmeOnlyRankUsesGpu,
                    real                             print_force)
 {
     /* By default we turn SIMD kernels on, but it might be turned off further down... */
@@ -1411,11 +1404,6 @@ void init_forcerec(FILE*                            fp,
          */
         fprintf(fp, "\n");
     }
-
-    if (pmeOnlyRankUsesGpu && c_enableGpuPmePpComms)
-    {
-        fr->pmePpCommGpu = std::make_unique<gmx::PmePpCommGpu>(cr->mpi_comm_mysim, cr->dd->pme_nodeid);
-    }
 }
 
 t_forcerec::t_forcerec() = default;
index 6a4e8a4fde0a564d9bfe1dbbf45f5f559a10d2f3..cba9875e48eb40954c2c8597e077266ad094b0a5 100644 (file)
@@ -101,7 +101,6 @@ void init_interaction_const_tables(FILE* fp, interaction_const_t* ic);
  * \param[in]  tabfn              Table potential file for non-bonded interactions
  * \param[in]  tabpfn             Table potential file for pair interactions
  * \param[in]  tabbfnm            Table potential files for bonded interactions
- * \param[in]  pmeOnlyRankUsesGpu Whether there is a PME task on a GPU on a PME-only rank
  * \param[in]  print_force        Print forces for atoms with force >= print_force
  */
 void init_forcerec(FILE*                            fplog,
@@ -115,7 +114,6 @@ void init_forcerec(FILE*                            fplog,
                    const char*                      tabfn,
                    const char*                      tabpfn,
                    gmx::ArrayRef<const std::string> tabbfnm,
-                   bool                             pmeOnlyRankUsesGpu,
                    real                             print_force);
 
 /*! \brief Divide exclusions over threads
index 6d94ce7755485338fda6587fbd74a129fed6288b..a567f75944181204739301a3051a01e1ca5874fe 100644 (file)
@@ -1347,8 +1347,12 @@ int Mdrunner::mdrunner()
         init_forcerec(fplog, mdlog, fr, fcd, inputrec, &mtop, cr, box,
                       opt2fn("-table", filenames.size(), filenames.data()),
                       opt2fn("-tablep", filenames.size(), filenames.data()),
-                      opt2fns("-tableb", filenames.size(), filenames.data()),
-                      pmeRunMode == PmeRunMode::GPU && !thisRankHasDuty(cr, DUTY_PME), pforce);
+                      opt2fns("-tableb", filenames.size(), filenames.data()), pforce);
+
+        if (devFlags.enableGpuPmePPComm && !thisRankHasDuty(cr, DUTY_PME))
+        {
+            fr->pmePpCommGpu = std::make_unique<gmx::PmePpCommGpu>(cr->mpi_comm_mysim, cr->dd->pme_nodeid);
+        }
 
         fr->nbv = Nbnxm::init_nb_verlet(mdlog, inputrec, fr, cr, *hwinfo, nonbondedDeviceInfo,
                                         &mtop, box, wcycle);