NAMD
ComputeSMDCUDAKernel.h
Go to the documentation of this file.
1 #ifndef SMDKERNEL_H
2 #define SMDKERNEL_H
3 
4 #include "Lattice.h"
5 #include "CudaUtils.h"
6 #include "CudaRecord.h"
7 
8 #ifdef NODEGROUP_FORCE_REGISTER
9 
12 void computeSMDForce(
13  const Lattice &lat,
14  const double inv_group_mass,
15  const double spring_constant,
16  const double transverse_spring_constant,
17  const double velocity,
18  const double3 direction,
19  const int doEnergy,
20  const int currentTime,
21  const bool mGpuOn,
22  const double3 origCM,
23  const float* d_mass,
24  const double* d_pos_x,
25  const double* d_pos_y,
26  const double* d_pos_z,
27  const char3* d_transform,
28  double * d_f_normal_x,
29  double * d_f_normal_y,
30  double * d_f_normal_z,
31  const int numSMDAtoms,
32  const int* d_smdAtomsSOAIndex,
33  double3* d_curCM,
34  double3* h_curCM,
35  double3** d_peerCOM,
36  cudaTensor* d_extVirial,
37  double* h_extEnergy,
38  double3* h_extForce,
39  cudaTensor* h_extVirial,
40  unsigned int* d_tbcatomic,
41  const int numDevices,
42  const int deviceIndex,
43  cudaStream_t stream);
44 
45 void initPeerCOMmgpu(
46  const int numDevices,
47  const int deviceIndex,
48  double3** d_peerPool,
49  double3* d_peerCOM,
50  cudaStream_t stream);
51 
52 void computeCOMSMDMgpu(
53  const int numSMDAtoms,
54  const Lattice &lat,
55  const float* d_mass,
56  const double* d_pos_x,
57  const double* d_pos_y,
58  const double* d_pos_z,
59  const char3* d_transform,
60  const int* d_smdAtomsSOAIndex,
61  double3* d_peerCOM,
62  double3** d_peer_curCM,
63  unsigned int* d_tbcatomic,
64  const int numDevices,
65  const int deviceIndex,
66  cudaStream_t stream);
67 
68 
69 #endif // NODEGROUP_FORCE_REGISTER
70 #endif // SMDKERNEL_H