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 #endif
10 
11 #include "HipDefines.h"
12 
13 
14 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
15 
17 private:
18  const int deviceID;
19 
20  float2 *vdwCoefTable;
21  int vdwCoefTableWidth;
22 #ifndef USE_TABLE_ARRAYS
23  cudaTextureObject_t vdwCoefTableTex;
24 #endif
25  int forceAndEnergyTableSize;
26 
27  // Non-bonded
28 #ifndef USE_TABLE_ARRAYS
29  cudaArray_t forceArray;
30  cudaTextureObject_t forceTableTex;
31 #endif
32  float4* forceTable;
33 
34 #ifndef USE_TABLE_ARRAYS
35  cudaArray_t energyArray;
36  cudaTextureObject_t energyTableTex;
37 #endif
38  float4* energyTable;
39 
40  // Modified exclusions
41 #ifndef USE_TABLE_ARRAYS
42  cudaArray_t modifiedExclusionForceArray;
43  cudaTextureObject_t modifiedExclusionForceTableTex;
44 #endif
45  float4* modifiedExclusionForceTable;
46 
47 #ifndef USE_TABLE_ARRAYS
48  cudaArray_t modifiedExclusionEnergyArray;
49  cudaTextureObject_t modifiedExclusionEnergyTableTex;
50 #endif
51  float4* modifiedExclusionEnergyTable;
52 
53  // Exclusions
54  float2 *exclusionVdwCoefTable;
55 #ifndef USE_TABLE_ARRAYS
56  cudaTextureObject_t exclusionVdwCoefTableTex;
57 #endif
58 
59  // cudaArray_t exclusionForceArray;
60  // cudaTextureObject_t exclusionForceTableTex;
61 
62  // cudaArray_t exclusionEnergyArray;
63  // cudaTextureObject_t exclusionEnergyTableTex;
64 
65  float4* exclusionTable;
66  float* r2_table;
67 #ifndef USE_TABLE_ARRAYS
68  cudaTextureObject_t exclusionTableTex;
69  cudaTextureObject_t r2_table_tex;
70 #endif
71 
72  void buildVdwCoefTable(bool update=false);
73  void buildForceAndEnergyTables(int tableSize);
74 
75 public:
76  CudaNonbondedTables(const int deviceID);
78 
79  float2* getVdwCoefTable() {return vdwCoefTable;}
80  int getVdwCoefTableWidth() {return vdwCoefTableWidth;}
81  int getForceAndEnergyTableSize() {return forceAndEnergyTableSize;}
82 #ifndef USE_TABLE_ARRAYS
83  cudaTextureObject_t getVdwCoefTableTex() {return vdwCoefTableTex;}
84  cudaTextureObject_t getForceTableTex() {return forceTableTex;}
85  cudaTextureObject_t getEnergyTableTex() {return energyTableTex;}
86 #endif
87  float4* getForceTable() {return forceTable;}
88  float4* getEnergyTable() {return energyTable;}
89 
90  void updateTables();
91 
92  float2* getExclusionVdwCoefTable() {return exclusionVdwCoefTable;}
93 #ifndef USE_TABLE_ARRAYS
94  cudaTextureObject_t getExclusionVdwCoefTableTex() {return exclusionVdwCoefTableTex;}
95  // cudaTextureObject_t getExclusionForceTableTex() {return exclusionForceTableTex;}
96  // cudaTextureObject_t getExclusionEnergyTableTex() {return exclusionEnergyTableTex;}
97 #endif
98  float4* getExclusionTable() {return exclusionTable;}
99  float* get_r2_table() {return r2_table;}
100 #ifndef USE_TABLE_ARRAYS
101  cudaTextureObject_t getExclusionTableTex() {return exclusionTableTex;}
102  cudaTextureObject_t get_r2_table_tex() {return r2_table_tex;}
103 #endif
104 
105 #ifndef USE_TABLE_ARRAYS
106  cudaTextureObject_t getModifiedExclusionForceTableTex() {return modifiedExclusionForceTableTex;}
107  cudaTextureObject_t getModifiedExclusionEnergyTableTex() {return modifiedExclusionEnergyTableTex;}
108 #endif
109  float4* getModifiedExclusionForceTable() {return modifiedExclusionForceTable;}
110  float4* getModifiedExclusionEnergyTable() {return modifiedExclusionEnergyTable;}
111 
112 };
113 
114 #endif // NAMD_CUDA
115 #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)