1 #ifndef CUDAPMESOLVER_H 2 #define CUDAPMESOLVER_H 4 #include "CudaPmeSolver.decl.h" 6 #if defined(NAMD_CUDA) || defined(NAMD_HIP) 16 CProxy_PmePencilXYMap&
xyMap, CProxy_PmePencilXMap&
zMap) :
29 CProxy_PmePencilXMap&
xMap, CProxy_PmePencilXMap&
yMap, CProxy_PmePencilXMap&
zMap) :
66 CProxy_ComputePmeCUDADevice deviceProxy;
73 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
89 for (
unsigned int iGrid = 0; iGrid <
NUM_GRID_MAX; ++iGrid) {
101 CudaPmePencilXY_SDAG_CODE
111 void start(
const CkCallback &);
112 void setDeviceBuffers();
113 std::array<float2*, NUM_GRID_MAX> getData(
const int i,
const bool sameDevice);
119 int numDeviceBuffers;
120 int numGetDeviceBuffer;
121 std::vector<DeviceBuffer> deviceBuffers;
122 CProxy_ComputePmeCUDADevice deviceProxy;
123 CProxy_CudaPmePencilZ pmePencilZ;
124 CProxy_PmePencilXMap zMap;
129 CudaPmePencilX_SDAG_CODE
131 CudaPmePencilX(CkMigrateMessage *m) : numGetDeviceBuffer(0), eventCreated(false) {}
139 void start(
const CkCallback &);
140 void setDeviceBuffers();
141 std::array<float2*, NUM_GRID_MAX> getData(
const int i,
const bool sameDevice);
147 int numDeviceBuffers;
148 int numGetDeviceBuffer;
149 std::vector<DeviceBuffer> deviceBuffers;
150 CProxy_ComputePmeCUDADevice deviceProxy;
151 CProxy_CudaPmePencilY pmePencilY;
152 CProxy_PmePencilXMap yMap;
157 CudaPmePencilY_SDAG_CODE
158 CudaPmePencilY() : numGetDeviceBufferZ(0), numGetDeviceBufferX(0), eventCreated(false) {}
159 CudaPmePencilY(CkMigrateMessage *m) : numGetDeviceBufferZ(0), numGetDeviceBufferX(0), eventCreated(false) {}
168 void start(
const CkCallback &);
169 void setDeviceBuffers();
170 std::array<float2*, NUM_GRID_MAX> getDataForX(
const int i,
const bool sameDevice);
171 std::array<float2*, NUM_GRID_MAX> getDataForZ(
const int i,
const bool sameDevice);
178 int numGetDeviceBufferZ;
179 int numGetDeviceBufferX;
180 int numDeviceBuffersZ;
181 int numDeviceBuffersX;
182 std::vector<DeviceBuffer> deviceBuffersZ;
183 std::vector<DeviceBuffer> deviceBuffersX;
184 CProxy_CudaPmePencilX pmePencilX;
185 CProxy_CudaPmePencilZ pmePencilZ;
186 CProxy_PmePencilXMap xMap;
187 CProxy_PmePencilXMap zMap;
192 CudaPmePencilZ_SDAG_CODE
193 CudaPmePencilZ() : numGetDeviceBufferY(0), numGetDeviceBufferXY(0), eventCreated(false) {}
194 CudaPmePencilZ(CkMigrateMessage *m) : numGetDeviceBufferY(0), numGetDeviceBufferXY(0), eventCreated(false) {}
203 void start(
const CkCallback &);
204 void setDeviceBuffers();
205 std::array<float2*, NUM_GRID_MAX> getData(
const int i,
const bool sameDevice);
211 int numDeviceBuffers;
212 int numGetDeviceBufferY;
213 std::vector<DeviceBuffer> deviceBuffers;
214 CProxy_CudaPmePencilY pmePencilY;
215 CProxy_PmePencilXMap yMap;
218 int numGetDeviceBufferXY;
219 CProxy_CudaPmePencilXY pmePencilXY;
220 CProxy_PmePencilXYMap xyMap;
224 #endif //CUDAPMESOLVER_H CProxy_PmePencilXMap zMap
void initialize(CudaPmeXInitMsg *msg)
void initialize(CudaPmeXYInitMsg *msg)
CudaPmePencilXYZ(CkMigrateMessage *m)
DeviceDataMsg(int i, cudaEvent_t event)
DeviceDataMsg(int i, cudaEvent_t event, std::array< float2 *, NUM_GRID_MAX > dataGrid)
CProxy_PmePencilXYMap xyMap
CProxy_ComputePmeCUDADevice deviceProxy
CudaPmePencilZ_SDAG_CODE CudaPmePencilZ()
CProxy_CudaPmePencilZ pmePencilZ
DeviceBuffer(int deviceID, bool isPeerDevice, std::array< float2 *, NUM_GRID_MAX > dataGrid)
CudaPmePencilX_SDAG_CODE CudaPmePencilX()
CProxy_PmePencilXMap xMap
void energyAndVirialDone(unsigned int iGrid)
CProxy_CudaPmePencilX pmePencilX
const unsigned int NUM_GRID_MAX
void initializeDevice(InitDeviceMsg2 *msg)
CProxy_ComputePmeCUDADevice deviceProxy
void initialize(CudaPmeXInitMsg *msg)
CudaPmeXYInitMsg(PmeGrid &pmeGrid, CProxy_CudaPmePencilXY &pmePencilXY, CProxy_CudaPmePencilZ &pmePencilZ, CProxy_PmePencilXYMap &xyMap, CProxy_PmePencilXMap &zMap)
CudaPmePencilXY(CkMigrateMessage *m)
void initializeDevice(InitDeviceMsg *msg)
CProxy_PmePencilXMap zMap
void initializeDevice(InitDeviceMsg *msg)
InitDeviceMsg2(int deviceID, cudaStream_t stream, CProxy_ComputePmeCUDAMgr mgrProxy, CProxy_ComputePmeCUDADevice deviceProxy)
CudaPmePencilY_SDAG_CODE CudaPmePencilY()
InitDeviceMsg(CProxy_ComputePmeCUDADevice deviceProxy)
DeviceBuffer(int deviceID, bool isPeerDevice)
void initializeDevice(InitDeviceMsg2 *msg)
CProxy_CudaPmePencilZ pmePencilZ
void energyAndVirialDone(unsigned int iGrid)
CudaPmePencilY(CkMigrateMessage *m)
void initialize(CudaPmeXYZInitMsg *msg)
CProxy_CudaPmePencilY pmePencilY
void initialize(CudaPmeXInitMsg *msg)
void initializeDevice(InitDeviceMsg *msg)
CProxy_CudaPmePencilXY pmePencilXY
CProxy_ComputePmeCUDAMgr mgrProxy
CudaPmePencilX(CkMigrateMessage *m)
std::array< float2 *, NUM_GRID_MAX > dataGrid
CudaPmeXInitMsg(PmeGrid &pmeGrid, CProxy_CudaPmePencilX &pmePencilX, CProxy_CudaPmePencilY &pmePencilY, CProxy_CudaPmePencilZ &pmePencilZ, CProxy_PmePencilXMap &xMap, CProxy_PmePencilXMap &yMap, CProxy_PmePencilXMap &zMap)
std::array< float2 *, NUM_GRID_MAX > dataGrid
CudaPmeXYZInitMsg(PmeGrid &pmeGrid)
CudaPmePencilXY_SDAG_CODE CudaPmePencilXY()
CProxy_PmePencilXMap yMap
CudaPmePencilZ(CkMigrateMessage *m)