NAMD
CudaNonbondedTables.h
Go to the documentation of this file.
1 #ifndef CUDANONBONDEDTABLES_H
2 #define CUDANONBONDEDTABLES_H
3 
4 #ifdef NAMD_CUDA
5 #include <cuda.h>
6 #endif
7 #ifdef NAMD_HIP
8 #include <hip/hip_runtime.h>
9 #include "HipDefines.h"
10 #endif
11 
12 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
13 
15 private:
16  const int deviceID;
17 
18  float2 *vdwCoefTable;
19  int vdwCoefTableWidth;
20  cudaTextureObject_t vdwCoefTableTex;
21  int forceAndEnergyTableSize;
22 
23  // Non-bonded
24  cudaArray_t forceArray;
25  cudaTextureObject_t forceTableTex;
26  float4* forceTable;
27 
28  cudaArray_t energyArray;
29  cudaTextureObject_t energyTableTex;
30  float4* energyTable;
31 
32  // Modified exclusions
33  cudaArray_t modifiedExclusionForceArray;
34  cudaTextureObject_t modifiedExclusionForceTableTex;
35  float4* modifiedExclusionForceTable;
36 
37  cudaArray_t modifiedExclusionEnergyArray;
38  cudaTextureObject_t modifiedExclusionEnergyTableTex;
39  float4* modifiedExclusionEnergyTable;
40 
41  // Exclusions
42  float2 *exclusionVdwCoefTable;
43  cudaTextureObject_t exclusionVdwCoefTableTex;
44 
45  // cudaArray_t exclusionForceArray;
46  // cudaTextureObject_t exclusionForceTableTex;
47 
48  // cudaArray_t exclusionEnergyArray;
49  // cudaTextureObject_t exclusionEnergyTableTex;
50 
51  float4* exclusionTable;
52  float* r2_table;
53  cudaTextureObject_t exclusionTableTex;
54  cudaTextureObject_t r2_table_tex;
55 
56  void buildVdwCoefTable(bool update=false);
57  void buildForceAndEnergyTables(int tableSize);
58 
59 public:
60  CudaNonbondedTables(const int deviceID);
62 
63  float2* getVdwCoefTable() {return vdwCoefTable;}
64  int getVdwCoefTableWidth() {return vdwCoefTableWidth;}
65  int getForceAndEnergyTableSize() {return forceAndEnergyTableSize;}
66  cudaTextureObject_t getVdwCoefTableTex() {return vdwCoefTableTex;}
67  cudaTextureObject_t getForceTableTex() {return forceTableTex;}
68  cudaTextureObject_t getEnergyTableTex() {return energyTableTex;}
69  float4* getForceTable() {return forceTable;}
70  float4* getEnergyTable() {return energyTable;}
71 
72  void updateTables();
73 
74  float2* getExclusionVdwCoefTable() {return exclusionVdwCoefTable;}
75  cudaTextureObject_t getExclusionVdwCoefTableTex() {return exclusionVdwCoefTableTex;}
76  // cudaTextureObject_t getExclusionForceTableTex() {return exclusionForceTableTex;}
77  // cudaTextureObject_t getExclusionEnergyTableTex() {return exclusionEnergyTableTex;}
78  float4* getExclusionTable() {return exclusionTable;}
79  float* get_r2_table() {return r2_table;}
80  cudaTextureObject_t getExclusionTableTex() {return exclusionTableTex;}
81  cudaTextureObject_t get_r2_table_tex() {return r2_table_tex;}
82 
83  cudaTextureObject_t getModifiedExclusionForceTableTex() {return modifiedExclusionForceTableTex;}
84  cudaTextureObject_t getModifiedExclusionEnergyTableTex() {return modifiedExclusionEnergyTableTex;}
85  float4* getModifiedExclusionForceTable() {return modifiedExclusionForceTable;}
86  float4* getModifiedExclusionEnergyTable() {return modifiedExclusionEnergyTable;}
87 
88 };
89 
90 #endif // NAMD_CUDA
91 #endif // CUDANONBONDEDTABLES_H
cudaTextureObject_t getEnergyTableTex()
cudaTextureObject_t getModifiedExclusionForceTableTex()
float4 * getModifiedExclusionEnergyTable()
float4 * getModifiedExclusionForceTable()
cudaTextureObject_t get_r2_table_tex()
cudaTextureObject_t getModifiedExclusionEnergyTableTex()
cudaTextureObject_t getExclusionVdwCoefTableTex()
cudaTextureObject_t getExclusionTableTex()
cudaTextureObject_t getForceTableTex()
cudaTextureObject_t getVdwCoefTableTex()
float2 * getExclusionVdwCoefTable()
CudaNonbondedTables(const int deviceID)