Eliminated migrator group from fem framework. Replaced it with a method
authorMilind Bhandarkar <milind@cs.uiuc.edu>
Sun, 27 Aug 2000 10:43:57 +0000 (10:43 +0000)
committerMilind Bhandarkar <milind@cs.uiuc.edu>
Sun, 27 Aug 2000 10:43:57 +0000 (10:43 +0000)
in chunk object itself. Fixed a small bug in pupper that caused it not
to advance in the isSizing case.
Also, fixed a small typo in mesh2graph.C.

examples/fem/crack2D/driver.C
src/libs/ck-libs/fem/fem.C
src/libs/ck-libs/fem/fem.ci
src/libs/ck-libs/fem/fem.h
src/libs/ck-libs/fem/mesh2graph.C

index 92829cba692c1a0918cb9e1668a6fc49167e03e2..14cc920804b3abfd915dbd56bd61b32441f7520d 100644 (file)
@@ -151,6 +151,7 @@ driver(int nn, int *nnums, int ne, int *enums, int npere, int *conn)
   stime = CkTimer();
   for(i=0;i<gd->nTime;i++)
   {
+    CkPrintf("[%d] iteration %d at %lf secs\n", gd->myid, i, CkTimer());
     if (gd->ts_proportion[kk+1] == i)
     {
       kk++;
index bbcd464d8f0620e623f0fca8bece09437ae37004..456e1897f0daf29352231e7d4a8ceeca8ff6d260 100644 (file)
@@ -2,7 +2,6 @@
 
 CkChareID _mainhandle;
 CkArrayID _femaid;
-int _migHandle;
 unsigned int _nchunks;
 
 CtvStaticDeclare(chunk*, _femptr);
@@ -111,7 +110,6 @@ main::main(CkArgMsg *am)
       break;
     }
   }
-  _migHandle = CProxy_migrator::ckNew();
   _femaid = CProxy_chunk::ckNew(_nchunks);
   CProxy_chunk farray(_femaid);
   farray.setReductionClient(_allReduceHandler, 0);
@@ -804,15 +802,10 @@ chunk::pup(PUP::er &p)
       usize = pksz(userdata);
     p(usize);
     if(p.isPacking())
-    {
       pk(userdata,p.getBuf());
-      p.advance(usize);
-    }
     if(p.isUnpacking())
-    {
       userdata = upk(p.getBuf());
-      p.advance(usize);
-    }
+    p.advance(usize);
   }
 }
 
@@ -914,8 +907,8 @@ FEM_Migrate(void)
   int mype = CkMyPe();
   int npes = CkNumPes();
   int tope = (mype+1)%npes;
-  CProxy_migrator pmg(_migHandle);
-  pmg.migrateElement(new MigrateInfo((ArrayElement*)cptr,(mype+1)%npes));
+  CProxy_chunk cproxy(_femaid);
+  cproxy.migrate(new MigrateInfo(tope));
   CthSuspend();
   if(CkMyPe()!=tope)
   {
index 42108df836a16cc89dfd0e3d2b43c7052fb5d8a6..3ed12077bc1af7becf63ac549e1ba147d8f15e1d 100644 (file)
@@ -2,7 +2,6 @@ mainmodule fem {
   readonly CkChareID _mainhandle;
   readonly CkArrayID _femaid;
   readonly unsigned int _nchunks;
-  readonly int _migHandle;
   message [varsize] DataMsg;
   message [packed] ChunkMsg;
   message MigrateInfo;
@@ -10,15 +9,12 @@ mainmodule fem {
     entry main();
     entry void done(void);
   };
-  group migrator {
-    entry migrator(void);
-    entry void migrateElement(MigrateInfo *);
-  };
   array [1D] chunk {
     entry chunk(void);
     entry [threaded] void run(void);
     entry [threaded] void run(ChunkMsg*);
     entry void recv(DataMsg *);
     entry void result(DataMsg *);
+    entry void migrate(MigrateInfo *);
   };
 };
index 1a7f86d79838fe7e381509c37be931e70cdee9e1..1c0ac70dff8704dad1d633d9794fa6affdb1652c 100644 (file)
@@ -106,23 +106,8 @@ class ChunkMsg : public CMessage_ChunkMsg {
 class MigrateInfo :public CMessage_MigrateInfo
 {
  public:
-  ArrayElement *elem;
   int where;
-  MigrateInfo(ArrayElement *e, int w) : elem(e), where(w) {}
-};
-
-extern int _migHandle;
-
-class migrator : public Group
-{
- public:
-  migrator(void) {}
-  void migrateElement(MigrateInfo *msg)
-  {
-    // CkPrintf("migrator: tid is %p\n", CthSelf());
-    msg->elem->migrateMe(msg->where);
-    delete msg;
-  }
+  MigrateInfo(int w) : where(w) {}
 };
 
 #define MAXDT 20
@@ -170,6 +155,7 @@ class chunk : public ArrayElement1D
   void run(ChunkMsg*);
   void recv(DataMsg *);
   void result(DataMsg *);
+  void migrate(MigrateInfo *msg) { migrateMe(msg->where); delete msg; }
   int new_DT(int base_type, int vec_len=1, int init_offset=0, int distance=0) {
     if(ntypes==MAXDT) {
       CkAbort("FEM: registered datatypes limit exceeded.");
index d8bdda74249a0578539e00a58fe0f7659b53bbde..546384a2e14afa5850fb5048d45f31a8f4a3e25d 100644 (file)
@@ -159,7 +159,7 @@ main (int argc, char **argv)
   int *adjncy = mesh2graph(nelems, esize, conn, xadj);
   printf("mesh2graph returned...\n");
   printf("writing graph file...\n");
-  fprintf(fo, "%d %d %d", nelems, nnodes, esize);
+  fprintf(fo, "%d %d %d\n", nelems, nnodes, esize);
   for (i=0;i<nelems;i++)
   {
     for (j=0;j<esize;j++)