Switched to use a UNIFORM object distribution with locality for closer array indices.
authorTerry L. Wilmarth <wilmarth@uiuc.edu>
Tue, 18 Jan 2005 22:10:06 +0000 (22:10 +0000)
committerTerry L. Wilmarth <wilmarth@uiuc.edu>
Tue, 18 Jan 2005 22:10:06 +0000 (22:10 +0000)
examples/pose/ChunkSim/Worker.C
examples/pose/ChunkSim/Worker.ci
examples/pose/ChunkSim/Worker.h
examples/pose/ChunkSim/pgm.C

index 3281a5fd0fbeea298417eb72aa2c6b30b1298956..933f44f5d1bd5dfd83d962df315818e3dc418c21 100644 (file)
@@ -55,7 +55,6 @@ void team::doWork(int k)
     myWorkers[k%(numWorkers/numTeams)].data[j] += 
       myWorkers[k%(numWorkers/numTeams)].data[99-j];
   } 
-
   // generate some events
   if (k%19!=0) {
     wm = new WorkMsg;
index 54c95717d5b2add7c381f18bbb28f4c0bb4cb4b6..9e9a7f8c0cffe0909ff53b5c9d21fd3c9cb9bb34 100644 (file)
@@ -1,7 +1,7 @@
 message TeamData;
 message WorkMsg;
 
-poser team : sim adapt3 chpt {
+poser team : sim opt chpt {
   entry team(TeamData *);
   // Event methods
   entry [event] void work(WorkMsg *);
index 535cc666ca9d9af39140f0504a9025987eab00d4..ec19f70df3a924349ae8a0c810086b8a343ec952 100644 (file)
@@ -8,7 +8,7 @@
 #define HEAVY 1
 #define FULL 2
 
-#define WORKER_SZ 100
+#define WORKER_SZ 1000
 
 class TeamData {
  public:
index bcf785d7755d94d15f3e6bdcc707a341e5045900..c0c3e2b9f405f1c491ddc74700fc84fd66ad0161 100644 (file)
@@ -30,7 +30,7 @@ main::main(CkArgMsg *m)
   TeamData *td;
   int dest, j, k, wid=0;
   srand48(42);
-  buildMap(numTeams, RANDOM);
+  buildMap(numTeams, UNIFORM);
   for (k=0; k<numTeams; k++) { // create numTeams teams
     dest = map[k];
     td = new TeamData;
@@ -47,8 +47,15 @@ void main::buildMap(int numObjs, int dist)
   int i, j=0, k;
   if (dist == RANDOM)
     for (i=0; i<numObjs; i++) map[i] = lrand48() % CkNumPes();
-  else if (dist == UNIFORM)
-    for (i=0; i<numObjs; i++) map[i] = i % CkNumPes();
+  else if (dist == UNIFORM) {
+    i=0;
+    for (j=0; j<CkNumPes(); j++)
+      for (k=0; k<numObjs/CkNumPes(); k++) {
+       map[i] = j; 
+       i++;
+      }
+    while (i< numObjs) map[i] = CkNumPes()-1;
+  }
   else if (dist == IMBALANCED) {
     int min = (numObjs/CkNumPes())/2;
     if (min < 1) min = 1;