#include "gromacs/utility/classhelpers.h"
#include "gromacs/utility/gmxmpi.h"
+class GpuEventSynchronizer;
+
namespace gmx
{
/*! \brief Creates PME-PP GPU communication object
* \param[in] comm Communicator used for simulation
* \param[in] pmeRank Rank of PME task
- * \param[in] coordinatesOnDeviceEvent Event recorded when coordinates are available on device
*/
- PmePpCommGpu(MPI_Comm comm, int pmeRank, void* coordinatesOnDeviceEvent);
+ PmePpCommGpu(MPI_Comm comm, int pmeRank);
~PmePpCommGpu();
/*! \brief Perform steps required when buffer size changes
* \param[in] sendPtr Buffer with coordinate data
* \param[in] sendSize Number of elements to send
* \param[in] sendPmeCoordinatesFromGpu Whether send is from GPU, otherwise CPU
+ * \param[in] coordinatesReadyOnDeviceEvent Event recorded when coordinates are available on device
*/
- void sendCoordinatesToPmeCudaDirect(void *sendPtr, int sendSize, bool sendPmeCoordinatesFromGpu);
+ void sendCoordinatesToPmeCudaDirect(void *sendPtr, int sendSize, bool sendPmeCoordinatesFromGpu, GpuEventSynchronizer* coordinatesReadyOnDeviceEvent);
/*! \brief
* Return pointer to buffer used for staging PME force on GPU