NAMD
ComputeGroupRes1GroupCUDAKernel.h
Go to the documentation of this file.
1 #ifndef GROUP_RESTRAINTS_1GROUP_CUDA_KERNEL_H
2 #define GROUP_RESTRAINTS_1GROUP_CUDA_KERNEL_H
3 
4 #include "Lattice.h"
5 #include "CudaUtils.h"
6 #include "CudaRecord.h"
7 
8 #ifdef NODEGROUP_FORCE_REGISTER
9 void computeDistCOM
10 (
11  const int numRestrainedGroup,
12  double3* d_curCM,
13  double3** d_peerCOM,
14  const int numDevices,
15  cudaStream_t stream);
16 
17 void copyDistCOM
18 (
19  const int numRestrainedGroup,
20  double3** d_peerCOM,
21  double3* h_peerCOM,
22  const int numDevices,
23  cudaStream_t stream);
24 
25 void computeLocalCOM
26 (
27  const int numRestrainedGroup,
28  const double inv_group2_mass,
29  const int* d_groupAtomsSOAIndex,
30  const Lattice &lat,
31  const char3* d_transform,
32  const float* d_mass,
33  const double* d_pos_x,
34  const double* d_pos_y,
35  const double* d_pos_z,
36  double3* h_group2COM,
37  double3* d_group2COM,
38  unsigned int* d_tbcatomic,
39  cudaStream_t stream);
40 
41 
46 void computeGroupRestraint_1Group(
47  const bool mGpuOn,
48  const int useMagnitude,
49  const int doEnergy,
50  const int doVirial,
51  const int numRestrainedGroup,
52  const int restraintExp,
53  const double restraintK,
54  const double3 resCenterVec,
55  const double3 resDirection,
56  const double inv_group2_mass,
57  const int* d_groupAtomsSOAIndex,
58  const Lattice &lat,
59  const char3* d_transform,
60  const float* d_mass,
61  const double* d_pos_x,
62  const double* d_pos_y,
63  const double* d_pos_z,
64  double* d_f_normal_x,
65  double* d_f_normal_y,
66  double* d_f_normal_z,
67  cudaTensor* d_virial,
68  cudaTensor* h_extVirial,
69  double* h_resEnergy,
70  double3* h_resForce,
71  double3* h_group1COMRef,
72  double3* h_group2COM,
73  double3* h_diffCOM,
74  double3** d_peer2COM,
75  double3* d_group2COM,
76  unsigned int* d_tbcatomic,
77  int numDevices,
78  cudaStream_t stream);
79 
80 void initPeerCOMmgpuG(
81  const int numDevices,
82  const int deviceIndex,
83  double3** d_peerPool,
84  double3* d_peerCOM,
85  cudaStream_t stream);
86 
87 void computeCOMMgpu(
88  const int numAtoms,
89  const Lattice &lat,
90  const float* d_mass,
91  const double* d_pos_x,
92  const double* d_pos_y,
93  const double* d_pos_z,
94  const char3* d_transform,
95  const int* d_AtomsSOAIndex,
96  double3* d_peerCOM,
97  double3** d_peer_CM,
98  unsigned int* d_tbcatomic,
99  const int numDevices,
100  const int deviceIndex,
101  cudaStream_t stream);
102 
103 #endif // NODEGROUP_FORCE_REGISTER
104 #endif // GROUP_RESTRAINTS_1GROUP_CUDA_KERNEL_H