Avoid (re)initializing GPU update without DD
authorSzilárd Páll <pall.szilard@gmail.com>
Tue, 28 Jan 2020 18:24:13 +0000 (19:24 +0100)
committerPaul Bauer <paul.bauer.q@gmail.com>
Mon, 10 Feb 2020 07:40:06 +0000 (08:40 +0100)
Unless repartitioning happens the GPU update-constraints module's
expensive initialization only neeeds to be called once.

Fixes #3358

Change-Id: Ic2a147985da5907961a3e3277110bbae52e6cadc

src/gromacs/mdrun/md.cpp

index 8505f8649d6695c82ed79a346fd5c1dcff28a887..60851488b5cad593d2d8c2f5a0d9e96238e16e43 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011-2019, by the GROMACS development team, led by
+ * Copyright (c) 2011-2019,2020, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -1254,7 +1254,7 @@ void gmx::LegacySimulator::do_md()
 
         if (useGpuForUpdate)
         {
-            if (bNS)
+            if (bNS && (bFirstStep || DOMAINDECOMP(cr)))
             {
                 integrator->set(stateGpu->getCoordinates(), stateGpu->getVelocities(),
                                 stateGpu->getForces(), top.idef, *mdatoms, ekind->ngtc);