From ba71b7526c22715aceb36586e76f2ae58c4a2461 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Szil=C3=A1rd=20P=C3=A1ll?= Date: Thu, 3 Jun 2021 10:18:40 +0200 Subject: [PATCH] Add a getter function for the local atom count Refs #3915 --- src/gromacs/mdlib/sim_util.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/gromacs/mdlib/sim_util.cpp b/src/gromacs/mdlib/sim_util.cpp index f62bbfe8ff..7077b98151 100644 --- a/src/gromacs/mdlib/sim_util.cpp +++ b/src/gromacs/mdlib/sim_util.cpp @@ -1193,6 +1193,14 @@ static void setupGpuForceReductions(gmx::MdrunScheduleWorkload* runScheduleWork, } +/*! \brief Return the number of local atoms. + */ +static int getLocalAtomCount(const gmx_domdec_t& dd, const t_mdatoms& mdatoms, bool havePPDomainDecomposition) +{ + return havePPDomainDecomposition ? dd_numAtomsZones(dd) : mdatoms.homenr; +} + + void do_force(FILE* fplog, const t_commrec* cr, const gmx_multisim_t* ms, @@ -1317,7 +1325,7 @@ void do_force(FILE* fplog, { // TODO refactor this to do_md, after partitioning. stateGpu->reinit(mdatoms->homenr, - cr->dd != nullptr ? dd_numAtomsZones(*cr->dd) : mdatoms->homenr); + getLocalAtomCount(*cr->dd, *mdatoms, havePPDomainDecomposition(cr))); if (stepWork.haveGpuPmeOnThisRank) { // TODO: This should be moved into PME setup function ( pme_gpu_prepare_computation(...) ) @@ -2070,8 +2078,7 @@ void do_force(FILE* fplog, && !(stepWork.computeVirial || simulationWork.useGpuNonbonded || stepWork.haveGpuPmeOnThisRank)); if (combineMtsForcesBeforeHaloExchange) { - const int numAtoms = havePPDomainDecomposition(cr) ? dd_numAtomsZones(*cr->dd) : mdatoms->homenr; - combineMtsForces(numAtoms, + combineMtsForces(getLocalAtomCount(*cr->dd, *mdatoms, havePPDomainDecomposition(cr)), force.unpaddedArrayRef(), forceView->forceMtsCombined(), inputrec.mtsLevels[1].stepFactor); -- 2.22.0