use Ckpv on currentChareIdx
authorGengbin Zheng <gzheng@illinois.edu>
Mon, 31 May 2010 15:01:59 +0000 (10:01 -0500)
committerGengbin Zheng <gzheng@illinois.edu>
Mon, 31 May 2010 15:01:59 +0000 (10:01 -0500)
examples/amr/jacobi2D/Makefile
examples/bigsim/sdag/jacobi-no-redn/bg_config
examples/bigsim/sdag/jacobi-no-redn/parallelJacobi.C
src/ck-core/ck.C
src/conv-core/converse.h
src/conv-core/debug-conv.c
src/conv-core/threads.c
src/langs/bluegene/blue.C

index 5485a385dd0537aa74ef41a07aff1f2860310338..fe910c3bc458b4421b95b2f2169ab3c6af2439e8 100644 (file)
@@ -21,111 +21,3 @@ jacobi2DAMR.decl.h jacobi2DAMR.def.h: jacobi2DAMR.ci
 clean:
        rm -f *.o *~ *.de*.h $(DEST) conv-host charmrun
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
index 8ca74d83138f5d1a9ea4629a0bc11cb6f1c8efbc..380540990cba5251e784c0a4d7213e30308c5b0b 100644 (file)
@@ -1,11 +1,11 @@
-x 4
-y 2
-z 2
+x 2
+y 1
+z 1
 cth 1
 wth 1
-#stacksize  4000
+stacksize  14000
 #timing  walltime
-timing  bgelapse
+timing  elapse
 #timing  counter
 cpufactor   1.0
 fpfactor    5e-7
index fb990d1f9cea1078e8d345d1bf10df733ebf5a00..7dbe3e9c660671f4872053156e83099a87397715 100644 (file)
@@ -30,7 +30,6 @@ Chunk::Chunk(int t, int x, int y){
   iterations =0;
   myMax = 99999.999;
 
-
   // CkPrintf("[%d] x is %d, y is %d, t is %d %f\n",CkMyPe(),x,y,t,BgGetTime());  
   myxdim = int(xdim/total);
   counter=0;
@@ -85,6 +84,7 @@ void Chunk::resetBoundary() {
        A[indexof(0,i,myydim)] = 1.0;
   
 }
+
 }
 
 
@@ -188,6 +188,8 @@ void Chunk::startWork(){
     CkPrintf("\n\nA in end of startWork is \n");
   print();
 #endif
+int xx[1024*4+100];
+for (int i=0;i<1024*4+100;i++) xx[i]=i;
 }
 
 
index 59ac842b73ea393f2f9ed13bc3ca930635755ddc..efce013e2476a53e9eba2af61e333f84ccd5b7ed 100644 (file)
@@ -68,8 +68,8 @@ Chare::Chare(void) {
   thishandle.objPtr=this;
 #ifndef CMK_CHARE_USE_PTR
      // for plain chare, objPtr is actually the index to chare obj table
-  if (CpvAccess(currentChareIdx) >= 0) {
-    thishandle.objPtr=(void*)CpvAccess(currentChareIdx);
+  if (CkpvAccess(currentChareIdx) >= 0) {
+    thishandle.objPtr=(void*)CkpvAccess(currentChareIdx);
   }
   chareIdx = CkpvAccess(currentChareIdx);
 #endif
index fabc93fadc2652692bd382310a7e11a56a8ea1e1..8f79e67f53b669483d76e6048703633c6c4ab4aa 100644 (file)
@@ -1272,6 +1272,9 @@ void       CthSwitchThread(CthThread t);
 size_t     CthStackOffset(CthThread t, char *p);
 char     * CthPointer(CthThread t, size_t pos);
 
+void CthSetMagic(CthThread);
+void CthCheckMagic(CthThread);
+
 /* unimplemented: preemptive threads */
 void       CthAutoYield(CthThread t, int flag);
 double     CthAutoYieldFreq(CthThread t);
index 69cf2058b7e167876e4bdf96c1d1fe0d7696014a..5fee4712835c988657549157105c092824f913fc 100644 (file)
@@ -67,7 +67,7 @@ void CpdSearchLeaks(char * msg) {
       info->begin_data = ntohl((int)info->begin_data);
       info->end_data = ntohl((int)info->end_data);
       info->begin_bss = ntohl((int)info->begin_bss);
-      info->end_bss = ntohl((int)info->end_bss);
+      info->end_bss = (char*)(size_t)ntohl((size_t)info->end_bss);
     }
     info->quick = ntohl(info->quick);
     info->pe = ntohl(info->pe);
index 10e0bea44e4de92b1a397cbd5ea81702121d7fe3..44e52cd5f6196e8251d3fc515c06df10aa271c6c 100644 (file)
@@ -605,6 +605,17 @@ static void CthThreadFinished(CthThread t)
        CthSuspend();
 }
 
+void CthSetMagic(CthThread t)
+{
+       *((int*)(B(t)->stack + B(t)->stacksize) -1) = THD_MAGIC_NUM;
+}
+
+void CthCheckMagic(CthThread t)
+{
+printf("CthCheckMagic\n");
+       if (*((int*)(B(t)->stack + B(t)->stacksize) -1) != THD_MAGIC_NUM)
+               CmiAbort("Charm++: CthThread stack overflow detected.");
+}
 
 /************ Scheduler Interface **********/
 
index 3adc254eaff1722da67b960b3e366aa3a37527f5..8109cbcc57a7d128f09ebefd4d378305c4bd0f02 100644 (file)
@@ -477,6 +477,10 @@ extern "C"
 void BgElapse(double t)
 {
 //  ASSERT(tTHREADTYPE == WORK_THREAD);
+#if CMK_ERROR_CHECKING
+  if (tTHREADTYPE == WORK_THREAD)
+  CthCheckMagic(CthSelf());
+#endif
   if (cva(bgMach).timingMethod == BG_ELAPSE)
     tCURRTIME += t;
 }
@@ -1285,6 +1289,10 @@ void BgProcessMessageDefault(threadInfo *tinfo, char *msg)
 
   entryFunc(msg, handInfo->userPtr);
 
+#if CMK_ERROR_CHECKING
+  CthCheckMagic(CthSelf());
+#endif
+
   stopVTimer();
 
   DEBUGM(5, ("=====End of BgProcessing a msg on node[%d]=====\n\n", BgMyNode()));
@@ -1324,6 +1332,9 @@ void BgNodeInitialize(nodeInfo *ninfo)
     threadInfo *tinfo = ninfo->threadinfo[i];
     t = CthCreate((CthVoidFn)run_thread, tinfo, cva(bgMach).stacksize);
     if (t == NULL) CmiAbort("BG> Failed to create worker thread. \n");
+#if CMK_ERROR_CHECKING
+    CthSetMagic(t);
+#endif
     tinfo->setThread(t);
     /* put to thread table */
     tTHREADTABLE[tinfo->id] = t;