1 #ifndef GRIDFORCECUDA_H 2 #define GRIDFORCECUDA_H 8 #include <hip/hip_runtime.h> 20 #if defined(NAMD_CUDA) || defined(NAMD_HIP) 21 #ifdef NODEGROUP_FORCE_REGISTER 22 class ComputeGridForceCUDA {
25 std::vector<HomePatch*> &patchList,
26 std::vector<AtomMap*> &atomMapsList,
28 int updateGriddedAtoms(
29 std::vector<AtomMap*> &atomMapsList,
30 std::vector<CudaLocalRecord> &localRecords,
31 std::vector<HomePatch*> &patches,
32 const int *h_globalToLocalID,
35 int createGriddedLists();
36 void destroyGriddedLists();
37 ~ComputeGridForceCUDA();
45 const double* d_pos_x,
46 const double* d_pos_y,
47 const double* d_pos_z,
48 const char3* d_transform,
53 int getNumGriddedAtoms(){
return numGriddedAtoms;}
54 void zeroOutEnergyVirialForcesAcrossGrids(
double* h_extEnergy,
57 void sumEnergyVirialForcesAcrossGrids(
double* h_extEnergy,
61 std::vector<HomePatch*> patchList;
63 int numGriddedAtomsLocal;
64 std::vector<int> griddedAtomsSOAIndex;
65 std::vector<int> griddedAtomsGlobalIndex;
66 std::map< std::pair<int,int>,
int> griddedAtomsGlobalIndexMap;
67 std::vector<int> griddedAtomsLocalIndex;
68 std::vector<int> gridOffsets;
69 std::vector<int> gridOffsetsLocal;
70 std::vector<int> gridCoordsOffsets;
71 GridforceGridCUDA* d_grids;
72 std::vector<GridforceGridCUDA> h_grids;
74 float* h_gridded_charge;
75 float* h_gridded_scale;
76 float* d_gridded_charge;
77 float* d_gridded_scale;
78 unsigned int* d_tbcatomic;
79 int* d_griddedAtomsSOAIndex;
80 int* d_griddedAtomsLocalIndex;
82 double* d_extEnergy_G;
83 double3* d_netForce_G;
85 double* h_extEnergy_G;
86 double3* h_netForce_G;
91 #endif //NODEGROUP_FORCE_REGISTER