Gromacs
2022.2
|
#include <gromacs/ewald/pme_gpu_types_host_impl.h>
The main PME CUDA/OpenCL-specific host data structure, included in the PME GPU structure by the archSpecific pointer.
Public Member Functions | |
PmeGpuSpecific (const DeviceContext &deviceContext, const DeviceStream &pmeStream) | |
Constructor. More... | |
Public Attributes | |
const DeviceContext & | deviceContext_ |
A handle to the GPU context. TODO: this is currently extracted from the implementation of pmeGpu->programHandle_, but should be a constructor parameter to PmeGpu, as well as PmeGpuProgram, managed by high-level code. | |
const DeviceStream & | pmeStream_ |
The GPU stream where everything related to the PME happens. | |
GpuEventSynchronizer | pmeForcesReady |
Triggered after the PME Force Calculations have been completed. | |
GpuEventSynchronizer | syncSpreadGridD2H |
Triggered after the grid has been copied to the host (after the spreading stage). | |
GpuEventSynchronizer | syncFftToPmeGrid |
Triggered after the grid has been converted from FFT grid to PME grid (before the gather stage). | |
GpuEventSynchronizer | spreadCompleted |
Triggered after spline/spread computations have been completed. | |
bool | performOutOfPlaceFFT = false |
A boolean which tells whether the complex and real grids for cu/clFFT are different or same. Currently true. | |
bool | useTiming = false |
A boolean which tells if the GPU timing events are enabled. False by default, can be enabled by setting the environment variable GMX_ENABLE_GPU_TIMING. Note: will not be reliable when multiple GPU tasks are running concurrently on the same device context, as CUDA events on multiple streams are untrustworthy. | |
std::vector< std::unique_ptr < gmx::Gpu3dFft > > | fftSetup |
Vector of FFT setups. | |
gmx::EnumerationArray < PmeStage, GpuRegionTimer > | timingEvents |
All the timers one might use. | |
std::set< PmeStage > | activeTimers |
Indices of timingEvents actually used. | |
int | coordinatesSize = 0 |
The kernelParams.atoms.coordinates float element count (actual) | |
int | coordinatesSizeAlloc = 0 |
The kernelParams.atoms.coordinates float element count (reserved) | |
int | forcesSize = 0 |
The kernelParams.atoms.forces float element count (actual) | |
int | forcesSizeAlloc = 0 |
The kernelParams.atoms.forces float element count (reserved) | |
int | gridlineIndicesSize = 0 |
The kernelParams.atoms.gridlineIndices int element count (actual) | |
int | gridlineIndicesSizeAlloc = 0 |
The kernelParams.atoms.gridlineIndices int element count (reserved) | |
int | splineDataSize = 0 |
Both the kernelParams.atoms.theta and kernelParams.atoms.dtheta float element count (actual) | |
int | splineDataSizeAlloc = 0 |
Both the kernelParams.atoms.theta and kernelParams.atoms.dtheta float element count (reserved) | |
int | coefficientsSize [2] = { 0, 0 } |
The kernelParams.atoms.coefficients float element count (actual) | |
int | coefficientsCapacity [2] = { 0, 0 } |
The kernelParams.atoms.coefficients float element count (reserved) | |
int | splineValuesSize [2] = { 0, 0 } |
The kernelParams.grid.splineValuesArray float element count (actual) | |
int | splineValuesCapacity [2] = { 0, 0 } |
The kernelParams.grid.splineValuesArray float element count (reserved) | |
int | realGridSize [2] = { 0, 0 } |
The kernelParams.grid.realGrid float element count (actual) | |
int | realGridCapacity [2] = { 0, 0 } |
The kernelParams.grid.realGrid float element count (reserved) | |
int | complexGridSize [2] = { 0, 0 } |
The kernelParams.grid.fourierGrid float (not float2!) element count (actual) | |
int | complexGridCapacity [2] = { 0, 0 } |
The kernelParams.grid.fourierGrid float (not float2!) element count (reserved) | |
int | overlapXSizeLeft = 0 |
Buffer size used to transfer PME grid overlap region in X-dimension. | |
int | overlapXCapacityLeft = 0 |
Buffer capacity used to transfer PME grid overlap region in X-dimension. | |
int | overlapXSizeRight = 0 |
Buffer size used to transfer PME grid overlap region in X-dimension. | |
int | overlapXCapacityRight = 0 |
Buffer capacity used to transfer PME grid overlap region in X-dimension. | |
int | overlapYSendSizeLeft = 0 |
Buffer capacity used to send PME grid overlap region in Y-dimension. | |
int | overlapYSendCapacityLeft = 0 |
Buffer capacity used to send PME grid overlap region in Y-dimension. | |
int | overlapYRecvSizeLeft = 0 |
Buffer size used to recv PME grid overlap region in Y-dimension. | |
int | overlapYRecvCapacityLeft = 0 |
Buffer capacity used to recv PME grid overlap region in Y-dimension. | |
int | overlapYSendSizeRight = 0 |
Buffer capacity used to send PME grid overlap region in Y-dimension. | |
int | overlapYSendCapacityRight = 0 |
Buffer capacity used to send PME grid overlap region in Y-dimension. | |
int | overlapYRecvSizeRight = 0 |
Buffer size used to recv PME grid overlap region in Y-dimension. | |
int | overlapYRecvCapacityRight = 0 |
Buffer capacity used to recv PME grid overlap region in Y-dimension. | |
DeviceBuffer< float > | d_recvGridLeftX = nullptr |
Buffer used to transfer PME grid overlap region in X-dimension. | |
DeviceBuffer< float > | d_recvGridRightX = nullptr |
Buffer used to transfer PME grid overlap region in X-dimension. | |
DeviceBuffer< float > | d_sendGridLeftY = nullptr |
Buffer used to send PME grid overlap region in Y-dimension. | |
DeviceBuffer< float > | d_recvGridLeftY = nullptr |
Buffer used to recv PME grid overlap region in Y-dimension. | |
DeviceBuffer< float > | d_sendGridRightY = nullptr |
Buffer used to send PME grid overlap region in Y-dimension. | |
DeviceBuffer< float > | d_recvGridRightY = nullptr |
Buffer used to recv PME grid overlap region in Y-dimension. | |
|
inline |
Constructor.
[in] | deviceContext | GPU device context |
[in] | pmeStream | GPU pme stream. |