bool useGpuPmePpComms,
bool reinitGpuPmePpComms,
bool sendCoordinatesFromGpu,
+ bool receiveForcesToGpu,
GpuEventSynchronizer* coordinatesReadyOnDeviceEvent)
{
gmx_domdec_t* dd;
if (useGpuPmePpComms)
{
flags |= PP_PME_GPUCOMMS;
+ if (receiveForcesToGpu)
+ {
+ flags |= PP_PME_RECVFTOGPU;
+ }
}
if (c_useDelayedWait)
{
if (reinitGpuPmePpComms)
{
+ std::vector<gmx::RVec>& buffer = cr->dd->pmeForceReceiveBuffer;
+ buffer.resize(n);
fr->pmePpCommGpu->reinit(n);
}
false,
false,
false,
+ false,
nullptr);
}
bool useGpuPmePpComms,
bool receiveCoordinateAddressFromPme,
bool sendCoordinatesFromGpu,
+ bool receiveForcesToGpu,
GpuEventSynchronizer* coordinatesReadyOnDeviceEvent,
gmx_wallcycle* wcycle)
{
useGpuPmePpComms,
receiveCoordinateAddressFromPme,
sendCoordinatesFromGpu,
+ receiveForcesToGpu,
coordinatesReadyOnDeviceEvent);
wallcycle_stop(wcycle, WallCycleCounter::PpPmeSendX);
unsigned int flags = PP_PME_FINISH;
gmx_pme_send_coeffs_coords(
- nullptr, cr, flags, {}, {}, {}, {}, {}, {}, nullptr, gmx::ArrayRef<gmx::RVec>(), 0, 0, 0, 0, -1, false, false, false, nullptr);
+ nullptr, cr, flags, {}, {}, {}, {}, {}, {}, nullptr, gmx::ArrayRef<gmx::RVec>(), 0, 0, 0, 0, -1, false, false, false, false, nullptr);
}
void gmx_pme_send_switchgrid(const t_commrec* cr, ivec grid_size, real ewaldcoeff_q, real ewaldcoeff_lj)