NAMD
Public Member Functions | List of all members
CudaNonbondedTables Class Reference

#include <CudaNonbondedTables.h>

Public Member Functions

 CudaNonbondedTables (const int deviceID)
 
 ~CudaNonbondedTables ()
 
float2 * getVdwCoefTable ()
 
int getVdwCoefTableWidth ()
 
int getForceAndEnergyTableSize () const
 
int getNumPotentialNbtholeTerms () const
 
cudaTextureObject_t getVdwCoefTableTex ()
 
cudaTextureObject_t getForceTableTex ()
 
cudaTextureObject_t getEnergyTableTex ()
 
cudaTextureObject_t getDrudeNbTholeTijTableTex ()
 
float4 * getForceTable ()
 
float4 * getEnergyTable ()
 
float * getDrudeNbTholeTijTable ()
 
void updateTables ()
 
float2 * getExclusionVdwCoefTable ()
 
cudaTextureObject_t getExclusionVdwCoefTableTex ()
 
float4 * getExclusionTable ()
 
float * get_r2_table ()
 
cudaTextureObject_t getExclusionTableTex ()
 
cudaTextureObject_t get_r2_table_tex ()
 
cudaTextureObject_t getModifiedExclusionForceTableTex ()
 
cudaTextureObject_t getModifiedExclusionEnergyTableTex ()
 
float4 * getModifiedExclusionForceTable ()
 
float4 * getModifiedExclusionEnergyTable ()
 

Detailed Description

Definition at line 16 of file CudaNonbondedTables.h.

Constructor & Destructor Documentation

◆ CudaNonbondedTables()

CudaNonbondedTables::CudaNonbondedTables ( const int  deviceID)

Definition at line 13 of file CudaNonbondedTables.C.

References cudaCheck, and FORCE_ENERGY_TABLE_SIZE.

13  : deviceID(deviceID) {
14 
15  vdwCoefTable = NULL;
16  vdwCoefTableWidth = 0;
17 #if !defined(USE_TABLE_ARRAYS)
18  forceTableTex = 0;
19  energyTableTex = 0;
20 #endif
21  forceTable = NULL;
22  energyTable = NULL;
23  drudeNbTholeTijTable = NULL;
24  drudeNbthole = false;
25  numPotentialNbtholeTerms = 0;
26 
27  exclusionTable = NULL;
28  r2_table = NULL;
29 
30 #if !defined(USE_TABLE_ARRAYS)
31  drudeNbTholeTijTableTex = 0;
32  modifiedExclusionForceTableTex = 0;
33  modifiedExclusionEnergyTableTex = 0;
34 #endif
35  modifiedExclusionForceTable = NULL;
36  modifiedExclusionEnergyTable = NULL;
37 
38  cudaCheck(cudaSetDevice(deviceID));
39  buildForceAndEnergyTables(FORCE_ENERGY_TABLE_SIZE);
40  buildVdwCoefTable();
41 }
#define FORCE_ENERGY_TABLE_SIZE
Definition: CudaUtils.h:40
#define cudaCheck(stmt)
Definition: CudaUtils.h:233

◆ ~CudaNonbondedTables()

CudaNonbondedTables::~CudaNonbondedTables ( )

Definition at line 43 of file CudaNonbondedTables.C.

References cudaCheck, and deallocate_device().

43  {
44  cudaCheck(cudaSetDevice(deviceID));
45  if (vdwCoefTable != NULL) deallocate_device<float2>(&vdwCoefTable);
46  if (exclusionTable != NULL) deallocate_device<float4>(&exclusionTable);
47  if (r2_table != NULL) deallocate_device<float>(&r2_table);
48  if (drudeNbTholeTijTable != NULL) deallocate_device(&drudeNbTholeTijTable);
49 
50 #if !defined(USE_TABLE_ARRAYS)
51  cudaCheck(cudaFreeArray(forceArray));
52  cudaCheck(cudaFreeArray(energyArray));
53  cudaCheck(cudaFreeArray(modifiedExclusionForceArray));
54  cudaCheck(cudaFreeArray(modifiedExclusionEnergyArray));
55 
56  cudaCheck(cudaDestroyTextureObject(forceTableTex));
57  cudaCheck(cudaDestroyTextureObject(energyTableTex));
58  cudaCheck(cudaDestroyTextureObject(modifiedExclusionForceTableTex));
59  cudaCheck(cudaDestroyTextureObject(modifiedExclusionEnergyTableTex));
60  // TODO: I don't see the code to destroy vdwCoefTableTex and exclusionVdwCoefTableTex. Is this correct
61  if (drudeNbthole) cudaCheck(cudaDestroyTextureObject(drudeNbTholeTijTableTex));
62 #endif
63 
64  if (forceTable != NULL) deallocate_device<float4>(&forceTable);
65  if (energyTable != NULL) deallocate_device<float4>(&energyTable);
66  if (modifiedExclusionForceTable != NULL) deallocate_device<float4>(&modifiedExclusionForceTable);
67  if (modifiedExclusionEnergyTable != NULL) deallocate_device<float4>(&modifiedExclusionEnergyTable);
68 }
void deallocate_device(T **pp)
Definition: CudaUtils.h:333
#define cudaCheck(stmt)
Definition: CudaUtils.h:233

Member Function Documentation

◆ get_r2_table()

float* CudaNonbondedTables::get_r2_table ( )
inline

Definition at line 110 of file CudaNonbondedTables.h.

110 {return r2_table;}

◆ get_r2_table_tex()

cudaTextureObject_t CudaNonbondedTables::get_r2_table_tex ( )
inline

Definition at line 113 of file CudaNonbondedTables.h.

113 {return r2_table_tex;}

◆ getDrudeNbTholeTijTable()

float* CudaNonbondedTables::getDrudeNbTholeTijTable ( )
inline

Definition at line 99 of file CudaNonbondedTables.h.

99 {return drudeNbTholeTijTable;}

◆ getDrudeNbTholeTijTableTex()

cudaTextureObject_t CudaNonbondedTables::getDrudeNbTholeTijTableTex ( )
inline

Definition at line 95 of file CudaNonbondedTables.h.

95 {return drudeNbTholeTijTableTex;}

◆ getEnergyTable()

float4* CudaNonbondedTables::getEnergyTable ( )
inline

Definition at line 98 of file CudaNonbondedTables.h.

98 {return energyTable;}

◆ getEnergyTableTex()

cudaTextureObject_t CudaNonbondedTables::getEnergyTableTex ( )
inline

Definition at line 94 of file CudaNonbondedTables.h.

94 {return energyTableTex;}

◆ getExclusionTable()

float4* CudaNonbondedTables::getExclusionTable ( )
inline

Definition at line 109 of file CudaNonbondedTables.h.

109 {return exclusionTable;}

◆ getExclusionTableTex()

cudaTextureObject_t CudaNonbondedTables::getExclusionTableTex ( )
inline

Definition at line 112 of file CudaNonbondedTables.h.

112 {return exclusionTableTex;}

◆ getExclusionVdwCoefTable()

float2* CudaNonbondedTables::getExclusionVdwCoefTable ( )
inline

Definition at line 103 of file CudaNonbondedTables.h.

103 {return exclusionVdwCoefTable;}

◆ getExclusionVdwCoefTableTex()

cudaTextureObject_t CudaNonbondedTables::getExclusionVdwCoefTableTex ( )
inline

Definition at line 105 of file CudaNonbondedTables.h.

105 {return exclusionVdwCoefTableTex;}

◆ getForceAndEnergyTableSize()

int CudaNonbondedTables::getForceAndEnergyTableSize ( ) const
inline

Definition at line 89 of file CudaNonbondedTables.h.

89 {return forceAndEnergyTableSize;}

◆ getForceTable()

float4* CudaNonbondedTables::getForceTable ( )
inline

Definition at line 97 of file CudaNonbondedTables.h.

97 {return forceTable;}

◆ getForceTableTex()

cudaTextureObject_t CudaNonbondedTables::getForceTableTex ( )
inline

Definition at line 93 of file CudaNonbondedTables.h.

93 {return forceTableTex;}

◆ getModifiedExclusionEnergyTable()

float4* CudaNonbondedTables::getModifiedExclusionEnergyTable ( )
inline

Definition at line 121 of file CudaNonbondedTables.h.

121 {return modifiedExclusionEnergyTable;}

◆ getModifiedExclusionEnergyTableTex()

cudaTextureObject_t CudaNonbondedTables::getModifiedExclusionEnergyTableTex ( )
inline

Definition at line 118 of file CudaNonbondedTables.h.

118 {return modifiedExclusionEnergyTableTex;}

◆ getModifiedExclusionForceTable()

float4* CudaNonbondedTables::getModifiedExclusionForceTable ( )
inline

Definition at line 120 of file CudaNonbondedTables.h.

120 {return modifiedExclusionForceTable;}

◆ getModifiedExclusionForceTableTex()

cudaTextureObject_t CudaNonbondedTables::getModifiedExclusionForceTableTex ( )
inline

Definition at line 117 of file CudaNonbondedTables.h.

117 {return modifiedExclusionForceTableTex;}

◆ getNumPotentialNbtholeTerms()

int CudaNonbondedTables::getNumPotentialNbtholeTerms ( ) const
inline

Definition at line 90 of file CudaNonbondedTables.h.

90 {return numPotentialNbtholeTerms;}

◆ getVdwCoefTable()

float2* CudaNonbondedTables::getVdwCoefTable ( )
inline

Definition at line 87 of file CudaNonbondedTables.h.

87 {return vdwCoefTable;}

◆ getVdwCoefTableTex()

cudaTextureObject_t CudaNonbondedTables::getVdwCoefTableTex ( )
inline

Definition at line 92 of file CudaNonbondedTables.h.

92 {return vdwCoefTableTex;}

◆ getVdwCoefTableWidth()

int CudaNonbondedTables::getVdwCoefTableWidth ( )
inline

Definition at line 88 of file CudaNonbondedTables.h.

88 {return vdwCoefTableWidth;}

◆ updateTables()

void CudaNonbondedTables::updateTables ( )

Definition at line 214 of file CudaNonbondedTables.C.

214  {
215  buildVdwCoefTable(true);
216 }

The documentation for this class was generated from the following files: