NAMD
Public Member Functions | Public Attributes | List of all members
cr_sortop_reverse_priority Struct Reference

Public Member Functions

 cr_sortop_reverse_priority (cr_sortop_distance &sod, const ComputeNonbondedCUDA::patch_record *patchrecs)
 
bool pid_compare_priority (int pidi, int pidj)
 
bool operator() (ComputeNonbondedCUDA::compute_record j, ComputeNonbondedCUDA::compute_record i)
 
 cr_sortop_reverse_priority (cr_sortop_distance &sod, const CudaComputeNonbonded::PatchRecord *patchrecs)
 
bool pid_compare_priority (int2 pidi, int2 pidj)
 
bool operator() (CudaComputeNonbonded::ComputeRecord j, CudaComputeNonbonded::ComputeRecord i)
 

Public Attributes

cr_sortop_distancedistop
 
const
ComputeNonbondedCUDA::patch_record
pr
 
const
CudaComputeNonbonded::PatchRecord
pr
 

Detailed Description

Definition at line 1063 of file ComputeNonbondedCUDA.C.

Constructor & Destructor Documentation

cr_sortop_reverse_priority::cr_sortop_reverse_priority ( cr_sortop_distance sod,
const ComputeNonbondedCUDA::patch_record patchrecs 
)
inline

Definition at line 1066 of file ComputeNonbondedCUDA.C.

1067  : distop(sod), pr(patchrecs) { }
const ComputeNonbondedCUDA::patch_record * pr
cr_sortop_reverse_priority::cr_sortop_reverse_priority ( cr_sortop_distance sod,
const CudaComputeNonbonded::PatchRecord patchrecs 
)
inline

Definition at line 1576 of file CudaComputeNonbonded.C.

1577  : distop(sod), pr(patchrecs) { }
const ComputeNonbondedCUDA::patch_record * pr

Member Function Documentation

bool cr_sortop_reverse_priority::operator() ( ComputeNonbondedCUDA::compute_record  j,
ComputeNonbondedCUDA::compute_record  i 
)
inline

Definition at line 1086 of file ComputeNonbondedCUDA.C.

References distop, ComputeNonbondedCUDA::compute_record::pid, and pid_compare_priority().

1087  { // i and j reversed
1088  int pidi = pid_compare_priority(i.pid[0],i.pid[1]) ? i.pid[0] : i.pid[1];
1089  int pidj = pid_compare_priority(j.pid[0],j.pid[1]) ? j.pid[0] : j.pid[1];
1090  if ( pidi != pidj ) return pid_compare_priority(pidi, pidj);
1091  return distop(i,j);
1092  }
bool pid_compare_priority(int pidi, int pidj)
bool cr_sortop_reverse_priority::operator() ( CudaComputeNonbonded::ComputeRecord  j,
CudaComputeNonbonded::ComputeRecord  i 
)
inline

Definition at line 1596 of file CudaComputeNonbonded.C.

References distop, CudaComputeNonbonded::ComputeRecord::patchInd, CudaComputeNonbonded::ComputeRecord::pid, and pid_compare_priority().

1597  { // i and j reversed
1598  // Choose patch i (= patch with greater priority)
1599  int2 pidi = pid_compare_priority(make_int2(i.pid[0], i.patchInd[0]), make_int2(i.pid[1], i.patchInd[1])) ? make_int2(i.pid[0], i.patchInd[0]) : make_int2(i.pid[1], i.patchInd[1]);
1600  // Choose patch j
1601  int2 pidj = pid_compare_priority(make_int2(j.pid[0], j.patchInd[0]), make_int2(j.pid[1], j.patchInd[1])) ? make_int2(j.pid[0], j.patchInd[0]) : make_int2(j.pid[1], j.patchInd[1]);
1602  if ( pidi.x != pidj.x ) return pid_compare_priority(pidi, pidj);
1603  return distop(i,j);
1604  }
bool pid_compare_priority(int pidi, int pidj)
bool cr_sortop_reverse_priority::pid_compare_priority ( int  pidi,
int  pidj 
)
inline

Definition at line 1068 of file ComputeNonbondedCUDA.C.

References ComputeNonbondedCUDA::patch_record::hostPe, ComputeNonbondedCUDA::patch_record::isSameNode, ComputeNonbondedCUDA::patch_record::isSamePhysicalNode, PATCH_PRIORITY, pr, ComputeNonbondedCUDA::patch_record::reversePriorityRankInPe, and sortop_bitreverse().

Referenced by operator()().

1068  {
1069  const ComputeNonbondedCUDA::patch_record &pri = pr[pidi];
1070  const ComputeNonbondedCUDA::patch_record &prj = pr[pidj];
1071  if ( pri.isSamePhysicalNode && ! prj.isSamePhysicalNode ) return 0;
1072  if ( prj.isSamePhysicalNode && ! pri.isSamePhysicalNode ) return 1;
1073  if ( pri.isSameNode && ! prj.isSameNode ) return 0;
1074  if ( prj.isSameNode && ! pri.isSameNode ) return 1;
1075  if ( pri.isSameNode ) { // and prj.isSameNode
1076  int rpri = pri.reversePriorityRankInPe;
1077  int rprj = prj.reversePriorityRankInPe;
1078  if ( rpri != rprj ) return rpri > rprj;
1079  return sortop_bitreverse(CkRankOf(pri.hostPe),CkRankOf(prj.hostPe));
1080  }
1081  int ppi = PATCH_PRIORITY(pidi);
1082  int ppj = PATCH_PRIORITY(pidj);
1083  if ( ppi != ppj ) return ppi < ppj;
1084  return pidi < pidj;
1085  }
static bool sortop_bitreverse(int a, int b)
const ComputeNonbondedCUDA::patch_record * pr
#define PATCH_PRIORITY(PID)
Definition: Priorities.h:25
bool cr_sortop_reverse_priority::pid_compare_priority ( int2  pidi,
int2  pidj 
)
inline

Definition at line 1578 of file CudaComputeNonbonded.C.

References CudaComputeNonbonded::PatchRecord::isSameNode, CudaComputeNonbonded::PatchRecord::isSamePhysicalNode, PATCH_PRIORITY, CudaComputeNonbonded::PatchRecord::pe, CudaComputeNonbonded::PatchRecord::reversePriorityRankInPe, and sortop_bitreverse().

1578  {
1579  const CudaComputeNonbonded::PatchRecord &pri = pr[pidi.y];
1580  const CudaComputeNonbonded::PatchRecord &prj = pr[pidj.y];
1581  if ( pri.isSamePhysicalNode && ! prj.isSamePhysicalNode ) return 0;
1582  if ( prj.isSamePhysicalNode && ! pri.isSamePhysicalNode ) return 1;
1583  if ( pri.isSameNode && ! prj.isSameNode ) return 0;
1584  if ( prj.isSameNode && ! pri.isSameNode ) return 1;
1585  if ( pri.isSameNode ) { // and prj.isSameNode
1586  int rpri = pri.reversePriorityRankInPe;
1587  int rprj = prj.reversePriorityRankInPe;
1588  if ( rpri != rprj ) return rpri > rprj;
1589  return sortop_bitreverse(CkRankOf(pri.pe),CkRankOf(prj.pe));
1590  }
1591  int ppi = PATCH_PRIORITY(pidi.x);
1592  int ppj = PATCH_PRIORITY(pidj.x);
1593  if ( ppi != ppj ) return ppi < ppj;
1594  return pidi.x < pidj.x;
1595  }
const ComputeNonbondedCUDA::patch_record * pr
static bool sortop_bitreverse(int a, int b)
#define PATCH_PRIORITY(PID)
Definition: Priorities.h:25

Member Data Documentation

cr_sortop_distance & cr_sortop_reverse_priority::distop

Definition at line 1064 of file ComputeNonbondedCUDA.C.

Referenced by operator()().

const ComputeNonbondedCUDA::patch_record* cr_sortop_reverse_priority::pr

Definition at line 1065 of file ComputeNonbondedCUDA.C.

Referenced by pid_compare_priority().

const CudaComputeNonbonded::PatchRecord* cr_sortop_reverse_priority::pr

Definition at line 1575 of file CudaComputeNonbonded.C.


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