1 #ifndef COMPUTE_GROUP_RESTRAINTS_H 2 #define COMPUTE_GROUP_RESTRAINTS_H 16 #if defined NAMD_CUDA || defined NAMD_HIP 18 #ifdef NODEGROUP_FORCE_REGISTER 22 class GroupRestraintsCUDA {
25 GroupRestraintsCUDA(
const GroupRestraintParam *param,
bool mGpuOn,
int numDevices,
int devIdx,
int grpId);
27 ~GroupRestraintsCUDA();
30 void updateAtoms(std::vector<AtomMap*> &atomMapsList,
31 std::vector<CudaLocalRecord> &localRecords,
32 const int *h_globalToLocalID);
37 const char3* d_transform,
39 const double* d_pos_x,
40 const double* d_pos_y,
41 const double* d_pos_z,
53 const char3* d_transform,
55 const double* d_pos_x,
56 const double* d_pos_y,
57 const double* d_pos_z,
68 void initPeerCOM(double3** peerCOM, double3** peerCOM2, cudaStream_t stream);
69 bool splitOverDevicesGrp1;
70 bool splitOverDevicesGrp2;
75 int numRestrainedGroup1Local;
76 int numRestrainedGroup2Local;
79 bool useDistMagnitude;
80 const char *groupName;
83 double inv_group1_mass;
84 double inv_group2_mass;
97 double3** h_peer2COMG;
102 std::vector<HomePatch*> *patchList;
103 std::vector<int> groupAtomsSOAIndex;
104 int* d_groupAtomsSOAIndex;
105 int numRestrainedGroup1;
106 int numRestrainedGroup2;
107 int totalNumRestrained;
110 unsigned int* d_tbcatomic;
116 class ComputeGroupRestraintsCUDA {
118 ComputeGroupRestraintsCUDA(
const int ouputFreq,
121 ~ComputeGroupRestraintsCUDA();
124 void updateAtoms(std::vector<AtomMap*> &atomMapsList,
125 std::vector<CudaLocalRecord> &localRecords,
126 const int *h_globalToLocalID);
131 const char3* d_transform,
133 const double* d_pos_x,
134 const double* d_pos_y,
135 const double* d_pos_z,
136 cudaStream_t stream);
137 void initPeerCOM(cudaStream_t stream);
144 const char3* d_transform,
146 const double* d_pos_x,
147 const double* d_pos_y,
148 const double* d_pos_z,
149 double* d_f_normal_x,
150 double* d_f_normal_y,
151 double* d_f_normal_z,
156 cudaStream_t stream);
163 double3** d_peer1COMG;
164 double3** d_peer2COMG;
166 std::vector<GroupRestraintsCUDA*> restraintsCUDAList;
169 #endif // NODEGROUP_FORCE_REGISTER 173 #endif // COMPUTE_GROUP_RESTRAINTS_H