Gromacs  2024.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Classes | Public Member Functions
gmx::PmePpCommGpu Class Reference

#include <gromacs/ewald/pme_pp_comm_gpu.h>

Description

Manages communication related to GPU buffers between this PME rank and its PP rank.

Classes

class  Impl
 Class with interfaces and data for GPU version of PME-PP Communication. More...
 

Public Member Functions

 PmePpCommGpu (MPI_Comm comm, int pmeRank, gmx::HostVector< gmx::RVec > *pmeCpuForceBuffer, const DeviceContext &deviceContext, const DeviceStream &deviceStream, bool useNvshmem)
 Creates PME-PP GPU communication object. More...
 
void reinit (int size)
 Perform steps required when buffer size changes. More...
 
void receiveForceFromPme (RVec *recvPtr, int recvSize, bool recvPmeForceToGpu)
 Pull data from PME GPU directly using CUDA Memory copy. More...
 
void sendCoordinatesToPmeFromGpu (DeviceBuffer< RVec > sendPtr, int sendSize, GpuEventSynchronizer *coordinatesReadyOnDeviceEvent)
 Push coordinates buffer directly to GPU memory on PME task. More...
 
void sendCoordinatesToPmeFromCpu (RVec *sendPtr, int sendSize)
 Push coordinates buffer from host memory directly to GPU memory on PME task. More...
 
DeviceBuffer< gmx::RVecgetGpuForceStagingPtr ()
 Return pointer to buffer used for staging PME force on GPU.
 
GpuEventSynchronizer * getForcesReadySynchronizer ()
 Return pointer to event recorded when forces are ready.
 
DeviceBuffer< uint64_t > getGpuForcesSyncObj ()
 Return pointer to force synchronization NVSHMEM object.
 

Constructor & Destructor Documentation

gmx::PmePpCommGpu::PmePpCommGpu ( MPI_Comm  comm,
int  pmeRank,
gmx::HostVector< gmx::RVec > *  pmeCpuForceBuffer,
const DeviceContext &  deviceContext,
const DeviceStream deviceStream,
bool  useNvshmem 
)

Creates PME-PP GPU communication object.

Constructor stub.

Parameters
[in]commCommunicator used for simulation
[in]pmeRankRank of PME task
[in]pmeCpuForceBufferBuffer for PME force in CPU memory
[in]deviceContextGPU context.
[in]deviceStreamGPU stream.
[in]useNvshmemNVSHMEM enable/disable for GPU comm.

Member Function Documentation

void gmx::PmePpCommGpu::receiveForceFromPme ( RVec recvPtr,
int  recvSize,
bool  recvPmeForceToGpu 
)

Pull data from PME GPU directly using CUDA Memory copy.

Parameters
[out]recvPtrBuffer to receive PME force data
[in]recvSizeNumber of elements to receive
[in]recvPmeForceToGpuWhether receive is to GPU, otherwise CPU
void gmx::PmePpCommGpu::reinit ( int  size)

Perform steps required when buffer size changes.

init PME-PP GPU communication stub

Parameters
[in]sizeNumber of elements in buffer
void gmx::PmePpCommGpu::sendCoordinatesToPmeFromCpu ( RVec sendPtr,
int  sendSize 
)

Push coordinates buffer from host memory directly to GPU memory on PME task.

Parameters
[in]sendPtrBuffer with coordinate data
[in]sendSizeNumber of elements to send
void gmx::PmePpCommGpu::sendCoordinatesToPmeFromGpu ( DeviceBuffer< RVec sendPtr,
int  sendSize,
GpuEventSynchronizer *  coordinatesReadyOnDeviceEvent 
)

Push coordinates buffer directly to GPU memory on PME task.

Parameters
[in]sendPtrBuffer with coordinate data
[in]sendSizeNumber of elements to send
[in]coordinatesReadyOnDeviceEventEvent recorded when coordinates are available on device

The documentation for this class was generated from the following files: