1. liveViz has a flag now
authorAbhinav Bhatele <bhatele@illinois.edu>
Thu, 7 Aug 2008 21:29:01 +0000 (21:29 +0000)
committerAbhinav Bhatele <bhatele@illinois.edu>
Thu, 7 Aug 2008 21:29:01 +0000 (21:29 +0000)
2. m and n replaced by patchDimX and patchDimY

examples/charm++/Molecular2D/Compute.C
examples/charm++/Molecular2D/Makefile
examples/charm++/Molecular2D/Patch.C
examples/charm++/Molecular2D/Patch.ci
examples/charm++/Molecular2D/Patch.h
examples/charm++/Molecular2D/common.h

index 7ca07175357ab098846cbd6c776179b041163512..5ad241307cff238e4a7d9bc439d43e43cca473c5 100644 (file)
@@ -12,7 +12,7 @@
  */
 
 #include "common.h"
-#include "liveViz.h"
+//#include "liveViz.h"
 #include "Patch.decl.h"
 #include "Compute.h"
 
@@ -21,14 +21,14 @@ extern /* readonly */ CProxy_Patch patchArray;
 extern /* readonly */ CProxy_Compute computeArray;
 
 extern /* readonly */ int numParts;
-extern /* readonly */ int m; // Number of Chare Rows
-extern /* readonly */ int n; // Number of Chare Columns
+extern /* readonly */ int patchDimX;   // Number of Chare Rows
+extern /* readonly */ int patchDimY;   // Number of Chare Columns
 extern /* readonly */ int L; 
 extern /* readonly */ double radius;
 extern /* readonly */ int finalStepCount; 
 
-extern double A; // Force Calculation parameter 1
-extern double B; // Force Calculation parameter 2
+extern double A;                       // Force Calculation parameter 1
+extern double B;                       // Force Calculation parameter 2
 
 // Compute - Default constructor
 Compute::Compute() {
index 7fd322418f4b3b7bf80acad759a8c2cc6c3c1588..4937feb10d50a169d06a1ff7f87f95210e58858b 100644 (file)
@@ -1,5 +1,5 @@
 CHARMC =../../../bin/charmc $(OPTS)
-OPTS   = -g
+OPTS   = -O2
 
 all: mol3d
 
index 66c32cb2dd6f93265f45fb4e1799bc826126acb9..e9fd822a14070baaca1ce6465d4e0b235d4a69d9 100644 (file)
@@ -13,7 +13,9 @@
 
 #include "time.h"
 #include "common.h"
-#include "liveViz.h"
+#ifdef RUN_LIVEVIZ
+  #include "liveViz.h"
+#endif
 #include "Patch.decl.h"
 #include "Patch.h"
 #include "Compute.h"
 /* readonly */ CProxy_Compute computeArray;
 
 /* readonly */ int numParts;
-/* readonly */ int m; // Number of Chare Rows
-/* readonly */ int n; // Number of Chare Columns
+/* readonly */ int patchDimX;  // Number of Chare Rows
+/* readonly */ int patchDimY;  // Number of Chare Columns
 /* readonly */ int L; 
 /* readonly */ double radius;
 /* readonly */ int finalStepCount; 
 
-double A = 2.0; // Force Calculation parameter 1
-double B = 1.0; // Force Calculation parameter 2
+double A = 2.0;                        // Force Calculation parameter 1
+double B = 1.0;                        // Force Calculation parameter 2
 
 // Entry point of Charm++ application
 Main::Main(CkArgMsg* msg) {
   int i, j, k, l;  
 
   numParts = DEFAULT_PARTICLES;
-  m = DEFAULT_M;
-  n = DEFAULT_N;
+  patchDimX = PATCH_DIM_X;
+  patchDimY = PATCH_DIM_Y;
   L = DEFAULT_L;
   radius = DEFAULT_RADIUS;
   finalStepCount = DEFAULT_FINALSTEPCOUNT;
@@ -49,7 +51,7 @@ Main::Main(CkArgMsg* msg) {
   mainProxy = thisProxy;
 
   // initializing the cell 2D array
-  patchArray = CProxy_Patch::ckNew(m,n);
+  patchArray = CProxy_Patch::ckNew(patchDimX, patchDimY);
   CkPrintf("patches inserted\n");
 
   // initializing the interaction 4D array
@@ -58,17 +60,17 @@ Main::Main(CkArgMsg* msg) {
   // For Round Robin insertion
   int numPes = CkNumPes();
   int currPE = -1;
-  int check[m][n][m][n];
+  int check[patchDimX][patchDimY][patchDimX][patchDimY];
   
-  for (int x = 0; x < m; x++ )
-    for (int y = 0; y < n; y++ )
-      for (int z = 0; z < m; z++ )
-       for (int w = 0; w < n; w++ )
+  for (int x=0; x<patchDimX; x++)
+    for (int y=0; y<patchDimY; y++)
+      for (int z=0; z<patchDimX; z++)
+       for (int w=0; w<patchDimY; w++)
          check[x][y][z][w] = 0;
 
 
-  for (int x = 0; x < m ; x++ ) {
-    for (int y = 0; y < n; y++ ) {
+  for (int x=0; x<patchDimX; x++) {
+    for (int y=0; y<patchDimY; y++) {
 
       // self interaction
       if(check[x][y][x][y])
@@ -78,7 +80,7 @@ Main::Main(CkArgMsg* msg) {
       computeArray( x, y, x, y ).insert( (currPE++) % numPes );
 
       // (x,y) and (x+1,y) pair
-      (x == m-1) ? (i=0, k=x) : (i=x, k=x+1);
+      (x == patchDimX-1) ? (i=0, k=x) : (i=x, k=x+1);
       if(check[i][y][k][y])
        CkPrintf("error %d %d %d %d\n", i, y, k, y);
       else
@@ -86,7 +88,7 @@ Main::Main(CkArgMsg* msg) {
       computeArray( i, y, k, y ).insert( (currPE++) % numPes );
 
       // (x,y) and (x,y+1) pair
-      (y == n-1) ? (j=0, l=y) : (j=y, l=y+1);
+      (y == patchDimY-1) ? (j=0, l=y) : (j=y, l=y+1);
       if(check[x][j][x][l])
        CkPrintf("error %d %d %d %d\n", x, j, x, l);
       else
@@ -94,7 +96,7 @@ Main::Main(CkArgMsg* msg) {
       computeArray( x, j, x, l ).insert( (currPE++) % numPes );
 
       // (x,y) and (x+1,y+1) pair, Irrespective of y
-      (x == m-1) ? ( i=0, k=x, j=(y+1)%n, l=y ) : (i=x, k=x+1, j=y, l=(y+1)%n );
+      (x == patchDimX-1) ? ( i=0, k=x, j=(y+1)%patchDimY, l=y ) : (i=x, k=x+1, j=y, l=(y+1)%patchDimY );
       if(check[i][j][k][l])
        CkPrintf("error %d %d %d %d\n", i, j, k, l);
       else
@@ -102,7 +104,7 @@ Main::Main(CkArgMsg* msg) {
       computeArray( i, j, k, l ).insert( (currPE++) % numPes );
 
       // (x,y) and (x-1,y+1) pair
-      (x == 0) ? ( i=x, k=(x-1+m)%m, j=y, l=(y+1)%n ) : (i=x-1, k=x, j=(y+1)%n, l=y );
+      (x == 0) ? ( i=x, k=(patchDimX-1), j=y, l=(y+1)%patchDimY ) : (i=x-1, k=x, j=(y+1)%patchDimY, l=y );
       if(check[i][j][k][l])
        CkPrintf("error %d %d %d %d\n", i, j, k, l);
       else
@@ -143,14 +145,14 @@ Patch::Patch() {
   srand48( thisIndex.x * 1000 + thisIndex.y +time(NULL));
 
   /* Particle initialization */
-  for(i = 0; i < numParts / (m * n); i++){
+  for(i=0; i < numParts/(patchDimX*patchDimY); i++) {
     particles.push_back(Particle());
 
     particles[i].x = drand48() * L + thisIndex.x * L;
     particles[i].y = drand48() * L + thisIndex.y * L;
     particles[i].vx = (drand48() - 0.5) * .2 * MAX_VELOCITY;
     particles[i].vy = (drand48() - 0.5) * .2 * MAX_VELOCITY;
-    particles[i].id = (thisIndex.x*m + thisIndex.y) * numParts / (m*n)  + i;
+    particles[i].id = (thisIndex.x*patchDimX + thisIndex.y) * numParts / (patchDimX*patchDimY)  + i;
 
     /* particles[i].x = 0.0 + thisIndex.x * L;
     particles[i].y = (float) i* 0.9 * L + thisIndex.y * L;
@@ -183,35 +185,35 @@ void Patch::start() {
   computeArray( x, y, x, y).interact(particles, x, y);
 
   // interaction with (x-1, y-1)
-  (x == 0) ? ( i=x, k=(x-1+m)%m, j=y, l=(y-1+n)%n ) : (i=x-1, k=x, j=(y-1+n)%n, l=y);
+  (x == 0) ? ( i=x, k=(x-1+patchDimX)%patchDimX, j=y, l=(y-1+patchDimY)%patchDimY ) : (i=x-1, k=x, j=(y-1+patchDimY)%patchDimY, l=y);
   computeArray( i, j, k, l ).interact(particles, x, y);
 
   // interaction with (x-1, y)
-  (x == 0) ? (i=x, k=(x-1+m)%m) : (i=x-1, k=x);
+  (x == 0) ? (i=x, k=(x-1+patchDimX)%patchDimX) : (i=x-1, k=x);
   computeArray( i, y, k, y).interact(particles, x, y);
 
   // interaction with (x-1, y+1)
-  (x == 0) ? ( i=x, k=(x-1+m)%m, j=y, l=(y+1)%n ) : (i=x-1, k=x, j=(y+1)%n, l=y);
+  (x == 0) ? ( i=x, k=(x-1+patchDimX)%patchDimX, j=y, l=(y+1)%patchDimY ) : (i=x-1, k=x, j=(y+1)%patchDimY, l=y);
   computeArray( i, j, k, l ).interact(particles, x, y);
 
   // interaction with (x, y-1)
-  (y == 0) ? (j=y, l=(y-1+n)%n) : (j=y-1, l=y);
+  (y == 0) ? (j=y, l=(y-1+patchDimY)%patchDimY) : (j=y-1, l=y);
   computeArray( x, j, x, l ).interact(particles, x, y);
 
   // interaction with (x, y+1)
-  (y == n-1) ? (j=(y+1)%n, l=y) : (j=y, l=y+1);// compute
+  (y == patchDimY-1) ? (j=(y+1)%patchDimY, l=y) : (j=y, l=y+1);// compute
   computeArray( x, j, x, l ).interact(particles, x, y);
 
   // interaction with (x+1, y-1)
-  (x == m-1) ? ( i=0, k=x, j=(y-1+n)%n, l=y ) : (i=x, k=x+1, j=y, l=(y-1+n)%n );
+  (x == patchDimX-1) ? ( i=0, k=x, j=(y-1+patchDimY)%patchDimY, l=y ) : (i=x, k=x+1, j=y, l=(y-1+patchDimY)%patchDimY );
   computeArray( i, j, k, l ).interact(particles, x, y);
 
   // interaction with (x+1, y)
-  (x == m-1) ? (i=0, k=x) : (i=x, k=x+1);
+  (x == patchDimX-1) ? (i=0, k=x) : (i=x, k=x+1);
   computeArray( i, y, k, y).interact(particles, x, y);
 
   // interaction with (x+1, y+1)
-  (x == m-1) ? ( i=0, k=x, j=(y+1)%n, l=y ) : (i=x, k=x+1, j=y, l=(y+1)%n );
+  (x == patchDimX-1) ? ( i=0, k=x, j=(y+1)%patchDimY, l=y ) : (i=x, k=x+1, j=y, l=(y+1)%patchDimY );
   computeArray( i, j, k, l ).interact(particles, x, y);
 
 }
@@ -252,7 +254,7 @@ void Patch::updateForces(CkVec<Particle> &updates) {
       } else
        i++;
     }
-    patchArray((x-1+m)%m,(y-1+n)%n).updateParticles(outgoing);
+    patchArray((x-1+patchDimX)%patchDimX, (y-1+patchDimY)%patchDimY).updateParticles(outgoing);
          
     // particles sent to (x-1,y)               
     outgoing.removeAll();
@@ -264,7 +266,7 @@ void Patch::updateForces(CkVec<Particle> &updates) {
       } else
        i++;
     }
-    patchArray((x-1+m)%m,y).updateParticles(outgoing);
+    patchArray((x-1+patchDimX)%patchDimX,y).updateParticles(outgoing);
 
     // particles sent to (x-1,y+1)
     outgoing.removeAll();
@@ -276,7 +278,7 @@ void Patch::updateForces(CkVec<Particle> &updates) {
       } else
        i++;
     }
-    patchArray((x-1+m)%m,(y+1)%n).updateParticles(outgoing);
+    patchArray((x-1+patchDimX)%patchDimX,(y+1)%patchDimY).updateParticles(outgoing);
 
     // particles sent to (x+1,y-1)
     outgoing.removeAll();
@@ -288,7 +290,7 @@ void Patch::updateForces(CkVec<Particle> &updates) {
       } else
        i++;
     }
-    patchArray((x+1)%m,(y-1+n)%n).updateParticles(outgoing);
+    patchArray((x+1)%patchDimY, (y-1+patchDimY)%patchDimY).updateParticles(outgoing);
 
     // particles sent to (x+1,y)
     outgoing.removeAll();
@@ -300,7 +302,7 @@ void Patch::updateForces(CkVec<Particle> &updates) {
       } else
        i++;
     }
-    patchArray((x+1)%m,y).updateParticles(outgoing);
+    patchArray((x+1)%patchDimX, y).updateParticles(outgoing);
 
     // particles sent to (x+1,y+1)
     outgoing.removeAll();
@@ -312,7 +314,7 @@ void Patch::updateForces(CkVec<Particle> &updates) {
       } else
        i++;
     }
-    patchArray((x+1)%m,(y+1)%n).updateParticles(outgoing);
+    patchArray((x+1)%patchDimX, (y+1)%patchDimY).updateParticles(outgoing);
 
     // particles sent to (x,y-1)
     outgoing.removeAll();
@@ -324,7 +326,7 @@ void Patch::updateForces(CkVec<Particle> &updates) {
       } else
        i++;
     }
-    patchArray(x,(y-1+n)%n).updateParticles(outgoing);
+    patchArray(x,(y-1+patchDimY)%patchDimY).updateParticles(outgoing);
 
     // particles sent to (x,y+1)
     outgoing.removeAll();
@@ -336,7 +338,7 @@ void Patch::updateForces(CkVec<Particle> &updates) {
       } else
        i++;
     }
-    patchArray(x,(y+1)%n).updateParticles(outgoing);
+    patchArray(x,(y+1)%patchDimY).updateParticles(outgoing);
 
     outgoing.removeAll();
 
@@ -351,7 +353,7 @@ void Patch::updateForces(CkVec<Particle> &updates) {
 // Function that checks whether it must start the following step or wait until other messages are received
 void Patch::checkNextStep(){
   int i;
-  if(CkMyPe() == 0)
+  if(thisIndex.x==0 && thisIndex.y==0)
   CkPrintf("Step %d\n", stepCount);
 
   if(updateFlag && incomingFlag) {
@@ -437,10 +439,10 @@ void Patch::limitVelocity(Particle &p) {
 }
 
 Particle& Patch::wrapAround(Particle &p) {
-  if(p.x < 0.0) p.x += L*m;
-  if(p.y < 0.0) p.y += L*n;
-  if(p.x > L*m) p.x -= L*m;
-  if(p.y > L*n) p.y -= L*n;
+  if(p.x < 0.0) p.x += L*patchDimX;
+  if(p.y < 0.0) p.y += L*patchDimY;
+  if(p.x > L*patchDimX) p.x -= L*patchDimX;
+  if(p.y > L*patchDimY) p.y -= L*patchDimY;
 
   return p;
 }
@@ -455,8 +457,9 @@ void color_pixel(unsigned char*buf,int width, int height, int xpos,int ypos,
   }
 }
     
+#ifdef RUN_LIVEVIZ
 // Each chare provides its particle data to LiveViz
-/*void Patch::requestNextFrame(liveVizRequestMsg *lvmsg) {
+void Patch::requestNextFrame(liveVizRequestMsg *lvmsg) {
   // These specify the desired total image size requested by the client viewer
   int wdes = lvmsg->req.wid;
   int hdes = lvmsg->req.ht;
@@ -500,7 +503,8 @@ void color_pixel(unsigned char*buf,int width, int height, int xpos,int ypos,
   liveVizDeposit(lvmsg, sx,sy, myWidthPx,myHeightPx, intensity, this, max_image_data);
   delete[] intensity;
 
-}*/
+}
+#endif
 
 // Prints all particles 
 void Patch::print(){
index 74e7fa2b15d325e11fe52c7aa1b2b265df5b842b..23941ed1465fac2a4dee539d5867391886fedb0a 100644 (file)
@@ -5,8 +5,8 @@ mainmodule Patch {
   readonly CProxy_Compute computeArray;
 
   readonly int numParts;       // total number of particles
-  readonly int m;              // total number of rows in the grid
-  readonly int n;              // total number of columns in the grid
+  readonly int patchDimX;      // total number of rows in the grid
+  readonly int patchDimY;      // total number of columns in the grid
   readonly int L;
   readonly double radius;      // maximum distance between two interacting particles
   readonly int finalStepCount; // number of steps at which the cells should stop computation
@@ -21,7 +21,6 @@ mainmodule Patch {
     entry void start();
     entry void updateForces(CkVec<Particle> particles);
     entry void updateParticles(CkVec<Particle> updates);
-    // entry void requestNextFrame(liveVizRequestMsg *m);
   };
 
   array [4D] Compute {
index e987bbb47d399cb52fd4e31b015aba1d95abca11..0439ad4d64c9a3a6a95c75edd3f4a490579b0429 100644 (file)
@@ -57,7 +57,9 @@ class Patch : public CBase_Patch {
     void updateForces(CkVec<Particle>&);
     void limitVelocity(Particle&);
     Particle& wrapAround(Particle &);
-    // void requestNextFrame(liveVizRequestMsg *m);
+#ifdef RUN_LIVEVIZ
+    void requestNextFrame(liveVizRequestMsg *m);
+#endif
 };
 
 #endif
index 41380422fa4a59ecb8957b541d0a672cd1976a5d..b5244063d0399839a0f2521d6b5144cb9c22a870 100644 (file)
@@ -19,8 +19,8 @@
 #define DEFAULT_MASS 1
 #define DEFAULT_DELTA 0.005
 #define DEFAULT_PARTICLES 2000
-#define DEFAULT_M 5
-#define DEFAULT_N 5
+#define PATCH_DIM_X 5
+#define PATCH_DIM_Y 5
 #define DEFAULT_L 1
 #define DEFAULT_RADIUS 5
 #define DEFAULT_FINALSTEPCOUNT 10