#include <gromacs/ewald/pme_pp_comm_gpu_impl.h>
Class with interfaces and data for CUDA version of PME-PP Communication.
Impl class stub.
|
| Impl (MPI_Comm comm, int pmeRank, const DeviceContext &deviceContext, const DeviceStream &deviceStream) |
| Creates PME-PP GPU communication object. More...
|
|
void | reinit (int size) |
| Perform steps required when buffer size changes. More...
|
|
void | receiveForceFromPmeCudaDirect (void *recvPtr, int recvSize, bool receivePmeForceToGpu) |
| Pull force buffer directly from GPU memory on PME rank to either GPU or CPU memory on PP task using CUDA Memory copy. More...
|
|
void | sendCoordinatesToPmeCudaDirect (void *sendPtr, int sendSize, bool sendPmeCoordinatesFromGpu, GpuEventSynchronizer *coordinatesReadyOnDeviceEvent) |
| Push coordinates buffer directly to GPU memory on PME task, from either GPU or CPU memory on PP task using CUDA Memory copy. sendPtr should be in GPU or CPU memory if sendPmeCoordinatesFromGpu is true or false respectively. If sending from GPU, this method should be called after the local GPU coordinate buffer operations. The remote PME task will automatically wait for data to be copied before commencing PME force calculations. More...
|
|
void * | getGpuForceStagingPtr () |
| Return pointer to buffer used for staging PME force on GPU.
|
|
GpuEventSynchronizer * | getForcesReadySynchronizer () |
| Return pointer to event recorded when forces are ready.
|
|
gmx::PmePpCommGpu::Impl::Impl |
( |
MPI_Comm |
comm, |
|
|
int |
pmeRank, |
|
|
const DeviceContext & |
deviceContext, |
|
|
const DeviceStream & |
deviceStream |
|
) |
| |
Creates PME-PP GPU communication object.
- Parameters
-
[in] | comm | Communicator used for simulation |
[in] | pmeRank | Rank of PME task |
[in] | deviceContext | GPU context. |
[in] | deviceStream | GPU stream. |
void gmx::PmePpCommGpu::Impl::receiveForceFromPmeCudaDirect |
( |
void * |
recvPtr, |
|
|
int |
recvSize, |
|
|
bool |
receivePmeForceToGpu |
|
) |
| |
Pull force buffer directly from GPU memory on PME rank to either GPU or CPU memory on PP task using CUDA Memory copy.
recvPtr should be in GPU or CPU memory if recvPmeForceToGpu is true or false, respectively. If receiving to GPU, this method should be called before the local GPU buffer operations. If receiving to CPU it should be called before forces are reduced with the other force contributions on the CPU. It will automatically wait for remote PME force data to be ready.
- Parameters
-
[out] | recvPtr | CPU buffer to receive PME force data |
[in] | recvSize | Number of elements to receive |
[in] | receivePmeForceToGpu | Whether receive is to GPU, otherwise CPU |
void gmx::PmePpCommGpu::Impl::reinit |
( |
int |
size | ) |
|
Perform steps required when buffer size changes.
- Parameters
-
[in] | size | Number of elements in buffer |
void gmx::PmePpCommGpu::Impl::sendCoordinatesToPmeCudaDirect |
( |
void * |
sendPtr, |
|
|
int |
sendSize, |
|
|
bool |
sendPmeCoordinatesFromGpu, |
|
|
GpuEventSynchronizer * |
coordinatesReadyOnDeviceEvent |
|
) |
| |
Push coordinates buffer directly to GPU memory on PME task, from either GPU or CPU memory on PP task using CUDA Memory copy. sendPtr should be in GPU or CPU memory if sendPmeCoordinatesFromGpu is true or false respectively. If sending from GPU, this method should be called after the local GPU coordinate buffer operations. The remote PME task will automatically wait for data to be copied before commencing PME force calculations.
- Parameters
-
[in] | sendPtr | Buffer with coordinate data |
[in] | sendSize | Number of elements to send |
[in] | sendPmeCoordinatesFromGpu | Whether send is from GPU, otherwise CPU |
[in] | coordinatesReadyOnDeviceEvent | Event recorded when coordinates are available on device |
The documentation for this class was generated from the following files: