X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=blobdiff_plain;f=src%2Fgromacs%2Fewald%2Fpme.h;h=f8653e20dda06838fb2647cc432ca8f23eb8ae56;hb=c088e63019ebc68760d35c3bc916015864aa8e89;hp=93145d4e1e9807b6aa92197e912eff175e9a2c6f;hpb=f59f6ec6e04f4a3732876c2c76250b8444fdcb69;p=alexxy%2Fgromacs.git diff --git a/src/gromacs/ewald/pme.h b/src/gromacs/ewald/pme.h index 93145d4e1e..f8653e20dd 100644 --- a/src/gromacs/ewald/pme.h +++ b/src/gromacs/ewald/pme.h @@ -119,6 +119,7 @@ private: std::vector reasons_; }; +class PmeCoordinateReceiverGpu; } // namespace gmx enum @@ -373,17 +374,24 @@ GPU_FUNC_QUALIFIER void pme_gpu_prepare_computation(gmx_pme_t* GPU_FUNC_ARGU /*! \brief * Launches first stage of PME on GPU - spreading kernel. * - * \param[in] pme The PME data structure. - * \param[in] xReadyOnDevice Event synchronizer indicating that the coordinates - * are ready in the device memory; nullptr allowed only on separate PME ranks. - * \param[in] wcycle The wallclock counter. - * \param[in] lambdaQ The Coulomb lambda of the current state of the - * system. Only used if FEP of Coulomb is active. + * \param[in] pme The PME data structure. + * \param[in] xReadyOnDevice Event synchronizer indicating that the coordinates + * are ready in the device memory; nullptr allowed only + * on separate PME ranks. + * \param[in] wcycle The wallclock counter. + * \param[in] lambdaQ The Coulomb lambda of the current state of the + * system. Only used if FEP of Coulomb is active. + * \param[in] useGpuDirectComm Whether direct GPU PME-PP communication is active + * \param[in] pmeCoordinateReceiverGpu Coordinate receiver object, which must be valid when + * direct GPU PME-PP communication is active */ -GPU_FUNC_QUALIFIER void pme_gpu_launch_spread(gmx_pme_t* GPU_FUNC_ARGUMENT(pme), - GpuEventSynchronizer* GPU_FUNC_ARGUMENT(xReadyOnDevice), - gmx_wallcycle* GPU_FUNC_ARGUMENT(wcycle), - real GPU_FUNC_ARGUMENT(lambdaQ)) GPU_FUNC_TERM; +GPU_FUNC_QUALIFIER void pme_gpu_launch_spread( + gmx_pme_t* GPU_FUNC_ARGUMENT(pme), + GpuEventSynchronizer* GPU_FUNC_ARGUMENT(xReadyOnDevice), + gmx_wallcycle* GPU_FUNC_ARGUMENT(wcycle), + real GPU_FUNC_ARGUMENT(lambdaQ), + const bool GPU_FUNC_ARGUMENT(useGpuDirectComm), + gmx::PmeCoordinateReceiverGpu* GPU_FUNC_ARGUMENT(pmeCoordinateReceiverGpu)) GPU_FUNC_TERM; /*! \brief * Launches middle stages of PME (FFT R2C, solving, FFT C2R) either on GPU or on CPU, depending on the run mode.