12 #define TINYLOAD 0.0005 16 int nPatches,
int nPes,
int nNbs) :
18 processorArray, nComps,
27 void AlgNbor::strategy()
30 double startTime = CmiWallTimer();
40 if (
processors[mype].available ==
false)
return;
51 avgload /= (nNbors+1);
53 if (myload <= avgload)
return;
55 CmiPrintf(
"[%d]:Myload: %f, avrage load: %f. \n", mype, myload, avgload);
69 double goodSize[3][3];
78 goodCompute[i][j] = 0;
85 if (
processors[mype].computeSet.hasElements() == 0)
break;
91 int nPatches, nProxies, badForComm;
94 if ( c->
load > goodSize[nPatches][nProxies] ) {
95 goodSize[nPatches][nProxies] = c->
load;
96 goodCompute[nPatches][nProxies] = c;
97 goodP[nPatches][nProxies] = p;
108 if (goodCompute[2][0]) {
110 assign(goodCompute[2][0], goodP[2][0]);
112 }
else if (goodCompute[1][1]) {
114 assign(goodCompute[1][1], goodP[1][1]);
116 }
else if (goodCompute[0][2]) {
118 assign(goodCompute[0][2], goodP[0][2]);
120 }
else if (goodCompute[1][0]) {
122 assign(goodCompute[1][0], goodP[1][0]);
124 }
else if (goodCompute[0][1]) {
126 assign(goodCompute[0][1], goodP[0][1]);
128 }
else if (goodCompute[0][0]) {
130 assign(goodCompute[0][0], goodP[0][0]);
133 iout <<
iINFO <<
"AlgNbor: No receiver found" <<
"\n" <<
endi;
137 lightProcessors->
remove(bestP);
249 CmiPrintf(
"AlgNbor finish time: %f.\n", CmiWallTimer()-startTime);
std::ostream & iINFO(std::ostream &s)
AlgNbor(int pe, computeInfo *computeArray, patchInfo *patchArray, processorInfo *processorArray, int nComps, int nPatches, int nPes, int nNbs)
void assign(computeInfo *c, processorInfo *pRec)
std::ostream & endi(std::ostream &s)
void insert(InfoRecord *)
processorInfo * processors
void numAvailable(computeInfo *c, processorInfo *p, int *nPatches, int *nProxies, int *isBadForCommunication)
static Units next(Units u)
void deAssign(computeInfo *c, processorInfo *pRec)
InfoRecord * next(Iterator *)
InfoRecord * iterator(Iterator *)
const char * strategyName