version 1.1087 | version 1.1088 |
---|
| |
#define NBWORKARRAY(TYPE,NAME,SIZE) \ | #define NBWORKARRAY(TYPE,NAME,SIZE) \ |
computeNonbondedWorkArrays->NAME.resize(SIZE); \ | computeNonbondedWorkArrays->NAME.resize(SIZE); \ |
TYPE * const NAME = computeNonbondedWorkArrays->NAME.begin(); \ | TYPE * const NAME = computeNonbondedWorkArrays->NAME.begin(); \ |
__assume_aligned(NAME,32); | __assume_aligned(NAME,64); |
#else | #else |
#define NBWORKARRAY(TYPE,NAME,SIZE) \ | #define NBWORKARRAY(TYPE,NAME,SIZE) \ |
computeNonbondedWorkArrays->NAME.resize(SIZE); \ | computeNonbondedWorkArrays->NAME.resize(SIZE); \ |
| |
| |
class ComputeNonbondedWorkArrays { | class ComputeNonbondedWorkArrays { |
public: | public: |
ResizeArray<plint> pairlisti; | ResizeArray<int> pairlisti; |
ResizeArray<BigReal> r2list; | ResizeArray<BigReal> r2list; |
| #ifdef NAMD_KNL |
| ResizeArray<float> r2list_f; |
| ResizeArray<float> xlist; |
| ResizeArray<float> ylist; |
| ResizeArray<float> zlist; |
| #endif |
| |
// DMK - Atom Sort | // DMK - Atom Sort |
// NOTE : TODO : For pair nonbonded compute objects, these arrays are needed | // NOTE : TODO : For pair nonbonded compute objects, these arrays are needed |
| |
// function arguments | // function arguments |
struct nonbonded { | struct nonbonded { |
CompAtom* p[2]; | CompAtom* p[2]; |
| #ifdef NAMD_KNL |
| CompAtomFlt *pFlt[2]; |
| #endif |
CompAtomExt *pExt[2]; | CompAtomExt *pExt[2]; |
// BEGIN LA | // BEGIN LA |
CompAtom* v[2]; | CompAtom* v[2]; |
| |
int numAtoms[2]; | int numAtoms[2]; |
| |
Vector offset; | Vector offset; |
| Vector offset_f; |
| |
// DMK - Atom Separation (water vs. non-water) | // DMK - Atom Separation (water vs. non-water) |
#if NAMD_SeparateWaters != 0 | #if NAMD_SeparateWaters != 0 |
| |
static Bool fixedAtomsOn; | static Bool fixedAtomsOn; |
static BigReal cutoff; | static BigReal cutoff; |
static BigReal cutoff2; | static BigReal cutoff2; |
| static float cutoff2_f; |
static BigReal dielectric_1; | static BigReal dielectric_1; |
static const LJTable* ljTable; | static const LJTable* ljTable; |
static const Molecule* mol; | static const Molecule* mol; |
| |
static int mic_table_n; | static int mic_table_n; |
static int mic_table_n_16; | static int mic_table_n_16; |
#endif | #endif |
| #ifdef NAMD_KNL |
| #define KNL_TABLE_SIZE (4096+2) |
| static float *knl_table_alloc; |
| static float *knl_fast_ener_table; |
| static float *knl_fast_grad_table; |
| static float *knl_scor_ener_table; |
| static float *knl_scor_grad_table; |
| static float *knl_slow_ener_table; |
| static float *knl_slow_grad_table; |
| static float *knl_corr_ener_table; |
| static float *knl_corr_grad_table; |
| static float *knl_full_ener_table; |
| static float *knl_full_grad_table; |
| #endif |
static BigReal scaling; | static BigReal scaling; |
static BigReal scale14; | static BigReal scale14; |
static BigReal switchOn; | static BigReal switchOn; |
| |
static BigReal k_vdwb; | static BigReal k_vdwb; |
static BigReal cutoff_3; | static BigReal cutoff_3; |
static BigReal cutoff_6; | static BigReal cutoff_6; |
| static float v_vdwa_f; |
| static float v_vdwb_f; |
| static float k_vdwa_f; |
| static float k_vdwb_f; |
| static float cutoff_3_f; |
| static float cutoff_6_f; |
static BigReal c0; | static BigReal c0; |
static BigReal c1; | static BigReal c1; |
static BigReal c3; | static BigReal c3; |
| |
static BigReal ewaldcof; | static BigReal ewaldcof; |
static BigReal pi_ewaldcof; | static BigReal pi_ewaldcof; |
| |
| // need macros for preprocessor |
| #define VDW_SWITCH_MODE_ENERGY 0 |
| #define VDW_SWITCH_MODE_MARTINI 1 |
| #define VDW_SWITCH_MODE_FORCE 2 |
| static int vdw_switch_mode; |
| |
// Ported by JLai -- JE - Go | // Ported by JLai -- JE - Go |
static Bool goGroPair; | static Bool goGroPair; |
static Bool goForcesOn; | static Bool goForcesOn; |