From: Berk Hess Date: Tue, 18 Jun 2019 08:28:19 +0000 (+0200) Subject: Make forcerec const in dispatchNonbondedKernel() X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=commitdiff_plain;h=efa9b8e4765c2a6afad8e1aa02aff411ffa73d8c;p=alexxy%2Fgromacs.git Make forcerec const in dispatchNonbondedKernel() Changed forcrecin Nbnxm::dispatchNonbondedKernel() from a pointer to a const reference. The GPU emulation kernel now writes the shift forces to nbnxn_atomdata_t. Change-Id: I170165529ba447db9b5d1824eea10675ae1bef7d --- diff --git a/src/gromacs/mdlib/sim_util.cpp b/src/gromacs/mdlib/sim_util.cpp index d53d02d694..84736d802d 100644 --- a/src/gromacs/mdlib/sim_util.cpp +++ b/src/gromacs/mdlib/sim_util.cpp @@ -350,7 +350,7 @@ static void do_nb_verlet(t_forcerec *fr, wallcycle_sub_start(wcycle, ewcsNONBONDED); } - nbv->dispatchNonbondedKernel(ilocality, *ic, flags, clearF, fr, enerd, nrnb); + nbv->dispatchNonbondedKernel(ilocality, *ic, flags, clearF, *fr, enerd, nrnb); if (!nbv->useGpu()) { @@ -1354,6 +1354,12 @@ void do_force(FILE *fplog, nbv->atomdata_add_nbat_f_to_f(Nbnxm::AtomLocality::NonLocal, forceOut.f, wcycle); + + if (fr->nbv->emulateGpu() && (flags & GMX_FORCE_VIRIAL)) + { + nbnxn_atomdata_add_nbat_fshift_to_fshift(nbv->nbat.get(), + fr->fshift); + } } } diff --git a/src/gromacs/nbnxm/kerneldispatch.cpp b/src/gromacs/nbnxm/kerneldispatch.cpp index 721ef867f1..eb8905525c 100644 --- a/src/gromacs/nbnxm/kerneldispatch.cpp +++ b/src/gromacs/nbnxm/kerneldispatch.cpp @@ -454,7 +454,7 @@ nonbonded_verlet_t::dispatchNonbondedKernel(Nbnxm::InteractionLocality iLocality const interaction_const_t &ic, int forceFlags, int clearF, - t_forcerec *fr, + const t_forcerec &fr, gmx_enerdata_t *enerd, t_nrnb *nrnb) { @@ -469,11 +469,11 @@ nonbonded_verlet_t::dispatchNonbondedKernel(Nbnxm::InteractionLocality iLocality kernelSetup(), nbat.get(), ic, - fr->shift_vec, + fr.shift_vec, forceFlags, clearF, enerd->grpp.ener[egCOULSR].data(), - fr->bBHAM ? + fr.bBHAM ? enerd->grpp.ener[egBHAMSR].data() : enerd->grpp.ener[egLJSR].data()); break; @@ -485,13 +485,13 @@ nonbonded_verlet_t::dispatchNonbondedKernel(Nbnxm::InteractionLocality iLocality case Nbnxm::KernelType::Cpu8x8x8_PlainC: nbnxn_kernel_gpu_ref(pairlistSet.gpuList(), nbat.get(), &ic, - fr->shift_vec, + fr.shift_vec, forceFlags, clearF, nbat->out[0].f, - fr->fshift[0], + nbat->out[0].fshift.data(), enerd->grpp.ener[egCOULSR].data(), - fr->bBHAM ? + fr.bBHAM ? enerd->grpp.ener[egBHAMSR].data() : enerd->grpp.ener[egLJSR].data()); break; diff --git a/src/gromacs/nbnxm/nbnxm.h b/src/gromacs/nbnxm/nbnxm.h index ef5bda9b87..32ae108d1b 100644 --- a/src/gromacs/nbnxm/nbnxm.h +++ b/src/gromacs/nbnxm/nbnxm.h @@ -276,7 +276,7 @@ struct nonbonded_verlet_t const interaction_const_t &ic, int forceFlags, int clearF, - t_forcerec *fr, + const t_forcerec &fr, gmx_enerdata_t *enerd, t_nrnb *nrnb);