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
wallcycle_sub_start(wcycle, ewcsNONBONDED);
}
wallcycle_sub_start(wcycle, ewcsNONBONDED);
}
- nbv->dispatchNonbondedKernel(ilocality, *ic, flags, clearF, fr, enerd, nrnb);
+ nbv->dispatchNonbondedKernel(ilocality, *ic, flags, clearF, *fr, enerd, nrnb);
nbv->atomdata_add_nbat_f_to_f(Nbnxm::AtomLocality::NonLocal,
forceOut.f, wcycle);
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);
+ }
const interaction_const_t &ic,
int forceFlags,
int clearF,
const interaction_const_t &ic,
int forceFlags,
int clearF,
gmx_enerdata_t *enerd,
t_nrnb *nrnb)
{
gmx_enerdata_t *enerd,
t_nrnb *nrnb)
{
kernelSetup(),
nbat.get(),
ic,
kernelSetup(),
nbat.get(),
ic,
forceFlags,
clearF,
enerd->grpp.ener[egCOULSR].data(),
forceFlags,
clearF,
enerd->grpp.ener[egCOULSR].data(),
enerd->grpp.ener[egBHAMSR].data() :
enerd->grpp.ener[egLJSR].data());
break;
enerd->grpp.ener[egBHAMSR].data() :
enerd->grpp.ener[egLJSR].data());
break;
case Nbnxm::KernelType::Cpu8x8x8_PlainC:
nbnxn_kernel_gpu_ref(pairlistSet.gpuList(),
nbat.get(), &ic,
case Nbnxm::KernelType::Cpu8x8x8_PlainC:
nbnxn_kernel_gpu_ref(pairlistSet.gpuList(),
nbat.get(), &ic,
forceFlags,
clearF,
nbat->out[0].f,
forceFlags,
clearF,
nbat->out[0].f,
+ nbat->out[0].fshift.data(),
enerd->grpp.ener[egCOULSR].data(),
enerd->grpp.ener[egCOULSR].data(),
enerd->grpp.ener[egBHAMSR].data() :
enerd->grpp.ener[egLJSR].data());
break;
enerd->grpp.ener[egBHAMSR].data() :
enerd->grpp.ener[egLJSR].data());
break;
const interaction_const_t &ic,
int forceFlags,
int clearF,
const interaction_const_t &ic,
int forceFlags,
int clearF,
gmx_enerdata_t *enerd,
t_nrnb *nrnb);
gmx_enerdata_t *enerd,
t_nrnb *nrnb);