#include <gromacs/domdec/gpuhaloexchange.h>
Manages GPU Halo Exchange object.
gmx::GpuHaloExchange::GpuHaloExchange |
( |
gmx_domdec_t * |
dd, |
|
|
MPI_Comm |
mpi_comm_mysim, |
|
|
void * |
streamLocal, |
|
|
void * |
streamNonLocal |
|
) |
| |
Creates GPU Halo Exchange object.
Coordinate Halo exchange will be performed in StreamNonLocal
, and the communicateHaloCoordinates
method must be called before any subsequent operations that access non-local parts of the coordinate buffer (such as the non-local non-bonded kernels). It also must be called after the local coordinates buffer operations (where the coordinates are copied to the device and hence the coordinatesReadyOnDeviceEvent
is recorded). Force Halo exchange will be performed in streamNonLocal
(also potentally with buffer clearing in streamLocal
)and the communicateHaloForces
method must be called after the non-local buffer operations, after the local force buffer has been copied to the GPU (if CPU forces are present), and before the local buffer operations. The force halo exchange does not yet support virial steps.
- Parameters
-
[in,out] | dd | domdec structure |
[in] | mpi_comm_mysim | communicator used for simulation |
[in] | streamLocal | local NB CUDA stream. |
[in] | streamNonLocal | non-local NB CUDA stream. |
void gmx::GpuHaloExchange::communicateHaloCoordinates |
( |
const matrix |
box, |
|
|
GpuEventSynchronizer * |
coordinatesReadyOnDeviceEvent |
|
) |
| |
GPU halo exchange of coordinates buffer.
Must be called after local setCoordinates (which records an event when the coordinate data has been copied to the device).
- Parameters
-
[in] | box | Coordinate box (from which shifts will be constructed) |
[in] | coordinatesReadyOnDeviceEvent | event recorded when coordinates have been copied to device |
void gmx::GpuHaloExchange::communicateHaloForces |
( |
bool |
accumulateForces | ) |
|
GPU halo exchange of force buffer.
- Parameters
-
[in] | accumulateForces | True if forces should accumulate, otherwise they are set |
Get the event synchronizer for the forces ready on device.
- Returns
- The event to synchronize the stream that consumes forces on device.
void gmx::GpuHaloExchange::reinitHalo |
( |
DeviceBuffer< float > |
d_coordinateBuffer, |
|
|
DeviceBuffer< float > |
d_forcesBuffer |
|
) |
| |
Initialization for GPU halo exchange of coordinates buffer.
- Parameters
-
[in] | d_coordinateBuffer | pointer to coordinates buffer in GPU memory |
[in] | d_forcesBuffer | pointer to coordinates buffer in GPU memory |
The documentation for this class was generated from the following file: