version 1.15 | version 1.16 |
---|
| |
| |
#include <algorithm> | #include <algorithm> |
| |
| #ifdef NAMD_KNL |
| inline int pairlist_from_pairlist_knl(float cutoff2, |
| float p_i_x, float p_i_y, float p_i_z, |
| const CompAtomFlt *p_j, |
| const plint *list, int list_size, int *newlist, |
| float *r2list, float *xlist, float *ylist, float *zlist) { |
| |
| int *nli = newlist; |
| float *r2i = r2list; |
| float *xli = xlist; |
| float *yli = ylist; |
| float *zli = zlist; |
| |
| if ( list_size <= 0) return 0; |
| |
| int g = 0; |
| |
| float p_j_x, p_j_y, p_j_z; |
| float x2, y2, z2, r2; |
| #pragma vector aligned |
| #pragma ivdep |
| for ( g = 0 ; g < list_size; ++g ) { |
| int gi=list[g]; |
| p_j_x = p_j[ gi ].position.x; |
| p_j_y = p_j[ gi ].position.y; |
| p_j_z = p_j[ gi ].position.z; |
| |
| x2 = p_i_x - p_j_x; |
| r2 = x2 * x2; |
| y2 = p_i_y - p_j_y; |
| r2 += y2 * y2; |
| z2 = p_i_z - p_j_z; |
| r2 += z2 * z2; |
| |
| if ( r2 <= cutoff2 ) { |
| *nli = gi; ++nli; |
| *r2i = r2; ++r2i; |
| *xli = x2; ++xli; |
| *yli = y2; ++yli; |
| *zli = z2; ++zli; |
| } |
| } |
| |
| return nli - newlist; |
| } |
| #endif// NAMD_KNL |
| |
inline int pairlist_from_pairlist(BigReal cutoff2, | inline int pairlist_from_pairlist(BigReal cutoff2, |
BigReal p_i_x, BigReal p_i_y, BigReal p_i_z, | BigReal p_i_x, BigReal p_i_y, BigReal p_i_z, |
const CompAtom *p_j, | const CompAtom *p_j, |
const plint *list, int list_size, plint *newlist, | const plint *list, int list_size, int *newlist, |
BigReal r2_delta, BigReal *r2list) { | BigReal r2_delta, BigReal *r2list) { |
| |
BigReal cutoff2_delta = cutoff2 + r2_delta; | BigReal cutoff2_delta = cutoff2 + r2_delta; |
plint *nli = newlist; | int *nli = newlist; |
BigReal *r2i = r2list; | BigReal *r2i = r2list; |
| |
if ( list_size <= 0) return 0; | if ( list_size <= 0) return 0; |
| |
int g = 0; | int g = 0; |
| |
| #ifdef NAMD_KNL |
| |
| BigReal p_j_x, p_j_y, p_j_z; |
| BigReal x2, y2, z2, r2; |
| #pragma vector aligned |
| #pragma ivdep |
| for ( g = 0 ; g < list_size; ++g ) { |
| int gi=list[g]; |
| p_j_x = p_j[ gi ].position.x; |
| p_j_y = p_j[ gi ].position.y; |
| p_j_z = p_j[ gi ].position.z; |
| |
| x2 = p_i_x - p_j_x; |
| r2 = x2 * x2 + r2_delta; |
| y2 = p_i_y - p_j_y; |
| r2 += y2 * y2; |
| z2 = p_i_z - p_j_z; |
| r2 += z2 * z2; |
| |
| if ( r2 <= cutoff2_delta ) { |
| *nli = gi; ++nli; |
| *r2i = r2; ++r2i; |
| } |
| } |
| |
| #else // NAMD_KNL |
#ifndef SIMPLE_PAIRLIST | #ifndef SIMPLE_PAIRLIST |
#ifdef A2_QPX | #ifdef A2_QPX |
//*************************************************************** | //*************************************************************** |
| |
} | } |
} | } |
| |
| #endif // NAMD_KNL |
| |
return nli - newlist; | return nli - newlist; |
} | } |
| |