Final parallel structure - Ready to take physical forces!
authorKumaresh P <kpattab2@uiuc.edu>
Mon, 21 Apr 2008 07:51:02 +0000 (07:51 +0000)
committerKumaresh P <kpattab2@uiuc.edu>
Mon, 21 Apr 2008 07:51:02 +0000 (07:51 +0000)
examples/charm++/Molecular/Makefile
examples/charm++/Molecular/main.C
examples/charm++/Molecular/main.ci

index 32ed9750ececb3b6254ac0aa18d9c38d03a11d49..9f0a301f3461248468ad98bbb3e9d8224b3010b5 100644 (file)
@@ -7,15 +7,13 @@ all: molecular
 
 
 molecular : main.o
-  $(CHARMC) -language charm++ -o molecular main.o
+       $(CHARMC)       -language       charm++ -g -o molecular main.o
 
-main.o : main.C main.decl.h main.def.h
-  $(CHARMC) -o main.o main.C
+main.o : main.C        main.decl.h     main.def.h
+       $(CHARMC) -g -o main.o main.C
 
 main.decl.h main.def.h : main.ci
        $(CHARMC) main.ci
 
-
 clean:
-  rm -f main.decl.h main.def.h main.o molecular charmrun
-
+       rm -f main.decl.h main.def.h main.o hello charmrun
index 193f2cdac532e0f512cc1ac5fdd819b5460b36fd..d013d95a8b30753f78a1ce10b5f3ae742ded165f 100644 (file)
@@ -3,8 +3,8 @@
 #define DEBUG 1
 
 #define DEFAULT_PARTICLES 1000
+#define DEFAULT_M 4
 #define DEFAULT_N 3
-#define DEFAULT_M 3
 #define DEFAULT_RADIUS 10
 #define DEFAULT_FINALSTEPCOUNT 2
 
 /* readonly */ CProxy_Interaction interactionArray; /* CHECKME */
 
 /* readonly */ int particles;
-/* readonly */ int m;
-/* readonly */ int n;
+/* readonly */ int m; // Number of Chare Rows
+/* readonly */ int n; // Number of Chare Columns
 /* readonly */ double radius;
 /* readonly */ int finalStepCount; 
 
-/* FIXME */
-/*
+/* FIXME
 struct Particle {
   double x,y,z; // coordinates
 };*/
@@ -45,7 +44,7 @@ class Interaction : public CBase_Interaction {
     // VARIABLES FOR FOCES COMPUTATION /* FIXME */
     int cellCount;  // to count the number of interact() calls
     
-    /* FIXME */
+    /* FIXME To Include the Vector of atom particles */
     int bufferedX;
     int bufferedY;
 
@@ -61,9 +60,7 @@ class Interaction : public CBase_Interaction {
 class Main : public CBase_Main {
 
   private:
-    int checkinCount;
-    
-    int doneCount; // Count to terminate
+    int checkInCount; // Count to terminate
 
     #ifdef DEBUG
       int interactionCount;
@@ -75,7 +72,7 @@ class Main : public CBase_Main {
     Main(CkArgMsg* msg);
     Main(CkMigrateMessage* msg);
 
-    void done();
+    void checkIn();
 };
 
 // Entry point of Charm++ application
@@ -88,7 +85,7 @@ Main::Main(CkArgMsg* msg) {
   finalStepCount = DEFAULT_FINALSTEPCOUNT;
 
   delete msg;
-  doneCount = 0;
+  checkInCount = 0;
 
   #ifdef DEBUG
     interactionCount=0;
@@ -104,7 +101,7 @@ Main::Main(CkArgMsg* msg) {
   for (int x = 0; x < m ; x++ ) {
     for (int y = 0; y < n; y++ ) {
 
-      //Processor Round Robin needed
+      //Processor Round Robin needed /* FIXME */
  
       #ifdef DEBUG
         CkPrintf("INITIAL:( %d, %d) ( %d , %d )\n", x,y,x,y);
@@ -150,6 +147,7 @@ Main::Main(CkArgMsg* msg) {
   }
 
   interactionArray.doneInserting();
+
   #ifdef DEBUG
     CkPrintf("Interaction Count: %d\n", interactionCount);
   #endif
@@ -157,21 +155,15 @@ Main::Main(CkArgMsg* msg) {
   cellArray.start();
 }
 
-// Constructor needed for chare object migration (ignore for now)
-// NOTE: This constructor does not need to appear in the ".ci" file
+// Constructor needed for chare object migration
 Main::Main(CkMigrateMessage* msg) { }
 
-void Main::done() {
-  doneCount ++;
-  if( doneCount >= m*n) {
-
-    #ifdef DEBUG
-      if(doneCount > m*n)
-        CkPrintf("ERROR: DONE COUNT\n");
-    #endif
+void Main::checkIn() {
 
+  checkInCount ++;
+  if( checkInCount >= m*n)
     CkExit();
-  }
+
 }
 
 
@@ -184,8 +176,7 @@ Cell::Cell() {
 // NOTE: This constructor does not need to appear in the ".ci" file
 Cell::Cell(CkMigrateMessage *msg) { }                                         
 Cell::~Cell() {
-  /* FIXME */
-  // Deallocate Atom lists
+  /* FIXME */ // Deallocate Atom lists
 }
 
 
@@ -242,25 +233,20 @@ void Cell::start() {
 void Cell::force() {
   forceCount++;
   if( forceCount >= 9) {
-    // Received all it's forces from the interactions.
-    stepCount++;
     
-    /* FIX ME*/
-    // Methods to migrate atoms.
-
-    #ifdef DEBUG
-      if( forceCount > 9 )
-        CkPrintf("FORCE COUNT ERROR\n");
-    #endif
+    // Received all it's forces from the interactions.
     
+    stepCount++;
     forceCount = 0;
+    
+    /* FIX ME*/ // Methods to migrate atoms.
       
     #ifdef DEBUG
       CkPrintf("STEP: %d DONE:( %d , %d )\n", stepCount, thisIndex.x, thisIndex.y);
     #endif
 
     if(stepCount >= finalStepCount) {
-      mainProxy.done();
+      mainProxy.checkIn();
     } else {
       thisProxy( thisIndex.x, thisIndex.y ).start();
     }
@@ -296,15 +282,12 @@ void Interaction::interact( int x, int y ) {
   cellCount++;
 
   if( cellCount >= 2) {
-    #ifdef DEBUG
-      if( cellCount > 2)      
-        CkPrintf("Cell Count Error");
-    #endif
 
     CkPrintf("PAIR:( %d , %d )  ( %d , %d ) \n", bufferedX, bufferedY, x, y );
     cellCount = 0;
     cellArray( bufferedX, bufferedY).force();
     cellArray( x, y).force();
+
   }
 
 }
index 543e6007c1f8da86c8e13cc3f034b81e1200eba6..4a681e9391044c48b5742a85003e8cd665d2c0f8 100644 (file)
@@ -1,20 +1,19 @@
 mainmodule main {
 
-       readonly CProxy_Main mainProxy;  
+  readonly CProxy_Main mainProxy;  
   readonly CProxy_Cell cellArray;
   readonly CProxy_Interaction interactionArray;
 
-       readonly int particles;                                 // 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 double radius;                                 // maximum distance between two interacting particles
+  readonly int particles;                                      // 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 double radius;                                      // maximum distance between two interacting particles
   readonly int finalStepCount; // number of steps at which the cells should stop computation
 
-       mainchare Main {
-               entry Main(CkArgMsg* msg);
-         // entry void stepDone(CkReductionMsg *m);
-               entry void done();
-       };
+  mainchare Main {
+         entry Main(CkArgMsg* msg);
+    entry void checkIn();
+  };
 
   array [2D] Cell {
     entry Cell();
@@ -24,7 +23,6 @@ mainmodule main {
 
   array [4D] Interaction {
     entry Interaction();
-    //entry Interaction(int i, int j, int k, int l);
     entry void interact( /*CkVec<CkArrayIndex1D> particles,*/ int i, int j);
   };