bug fix in gcollect prefetch cache flush
authoradash <adash>
Fri, 25 Sep 2009 22:05:55 +0000 (22:05 +0000)
committeradash <adash>
Fri, 25 Sep 2009 22:05:55 +0000 (22:05 +0000)
other small changes

Robust/src/Benchmarks/Prefetch/MatrixMultiply/dsm/makefile
Robust/src/ClassLibrary/JavaThread/Object.java
Robust/src/Runtime/DSTM/interface/dstm.h
Robust/src/Runtime/DSTM/interface/gCollect.c
Robust/src/Runtime/DSTM/interface/gCollect.h
Robust/src/Runtime/DSTM/interface/trans.c

index 064683cb82a0baa1d13e122e24f65d3e52e8eb5b..f2162cd9664ddf91a829d274fd57225f4ebce1eb 100644 (file)
@@ -1,13 +1,19 @@
 MAINCLASS=MatrixMultiply
 SRC1=${MAINCLASS}N.java
 SRC2=${MAINCLASS}Nrun.java
-FLAGS=-dsm -dsmcaching -prefetch -optimize -excprefetch MatrixMultiply.main -excprefetch MMul.setValues -excprefetch MMul.transpose -mainclass ${MAINCLASS} -trueprob 0.98
+SRC3=${MAINCLASS}D.java \
+       ../../../../ClassLibrary/JavaDSM/Barrier.java
+SRC4=${MAINCLASS}D2.java \
+       ../../../../ClassLibrary/JavaDSM/Barrier.java
+SRC5=${MAINCLASS}D3.java \
+       ../../../../ClassLibrary/JavaDSM/Barrier.java
+FLAGS=-dsm -dsmcaching -optimize -prefetch -excprefetch MatrixMultiply.main -excprefetch MMul.setValues -excprefetch MMul.transpose -mainclass ${MAINCLASS} -trueprob 0.98
 FLAGS1=-dsm -optimize -dsmcaching -mainclass ${MAINCLASS}
 FLAGS2=-dsm -optimize -mainclass ${MAINCLASS}
 default:
-       ../../../../buildscript ${FLAGS2} -o ${MAINCLASS}NPNC ${SRC1}
-       ../../../../buildscript ${FLAGS1} -o ${MAINCLASS}NPC ${SRC1}
-       ../../../../buildscript ${FLAGS} -o ${MAINCLASS}N ${SRC1}
+       ../../../../buildscript ${FLAGS2} -o ${MAINCLASS}NPNC ${SRC3}
+#      ../../../../buildscript ${FLAGS1} -o ${MAINCLASS}NPC ${SRC1}
+       ../../../../buildscript ${FLAGS} -o ${MAINCLASS}N ${SRC3}
 #      ../../../../buildscript ${FLAGS2} -o ${MAINCLASS}NPNC200 ${SRC2}
 #      ../../../../buildscript ${FLAGS} -o ${MAINCLASS}N200 ${SRC2}
 
index a9bf6f4dc8e573ec939704ea272b8fdc5aa6827c..a3bc22d94ab17ff51636f5528e55cf8c3039a7ef 100644 (file)
@@ -6,6 +6,9 @@ public class Object {
   private Object nextlockobject;
   private Object prevlockobject;
 
+  // temporary extra unused int filed to align objects for Java
+  int wkhqwemnbmwnb;
+
   public int hashCode() {
     if (!cachedHash) {
       cachedCode=nativehashCode();
index 9e80df5592f1362be9a7851bedea129824b30a89..c5288f88010ed8c7343a56ed601b3438cea373ea 100644 (file)
@@ -57,7 +57,7 @@
 //Prefetch tuning paramters
 //#define RETRYINTERVAL  20 //N (For Em3d, SOR, Moldyn benchmarks)
 //#define SHUTDOWNINTERVAL  3  //M
-#define RETRYINTERVAL  100 //N  (For MatrixMultiply, 2DFFT benchmarks)
+#define RETRYINTERVAL  75 //N  (For MatrixMultiply, 2DFFT benchmarks)
 #define SHUTDOWNINTERVAL 1  //M
 
 #include <stdlib.h>
index 6e9d339e204ff9f0f9005d4c1f4306cada81ca56..a6c115aa9a614cab4a8e3f677f8b0d560e9c8676 100644 (file)
@@ -112,10 +112,10 @@ void clearBlock(objstr_t *block) {
       if ((val>=tmpbegin)&(val<tmpend)) {
        prehashlistnode_t *tmp=curr->next=next->next;
        free(next);
-       next=tmp;
+       next=curr;
        //loop condition is broken now...need to check before incrementing
-       if (next==NULL)
-         break;
+       //      if (next==NULL)
+       // break;
       }
     }
     {
index 194080d4ae43175f5c9a88f2f183d61b5e51d910..c5e4e13ae0929dc576409d02ef91f50a5727bc69 100644 (file)
@@ -9,11 +9,11 @@
 
 #define STALE_MINTHRESHOLD 10 //minimum size
 
-#define STALE_MAXTHRESHOLD 30 //ugly hack..if you make this too small things
+#define STALE_MAXTHRESHOLD 40 //ugly hack..if you make this too small things
 // will fail in odd subtle ways
 
 #define DEFAULT_OBJ_STORE_SIZE (4194304-16) //just a little less the 4MB
-#define PREFETCH_FLUSH_THRESHOLD 20 //MINIMUM SIZE BEFORE FLUSHING
+#define PREFETCH_FLUSH_THRESHOLD 30 //MINIMUM SIZE BEFORE FLUSHING
 #define STALL_THRESHOLD 15 //number of prefetches stores before we can start freeing old ones
 
 
index b53e4bd57739ba010fc9203ded9c2ade23527f23..8843d829307916f42ace6fcdd134e1e27d4885ce 100644 (file)
@@ -754,7 +754,7 @@ __attribute__((pure)) objheader_t *transRead2(unsigned int oid) {
       objheader_t *headerObj;
       int size;
       GETSIZE(size, objcopy);
-      if((headerObj = prefetchobjstrAlloc(size + sizeof(objheader_t))) == NULL) {
+      if((headerObj = prefetchobjstrAlloc(size+sizeof(objheader_t))) == NULL) {
         printf("%s(): Error in getting memory from prefetch cache at %s, %d\n", __func__,
             __FILE__, __LINE__);
         pthread_mutex_unlock(&prefetchcache_mutex);
@@ -771,7 +771,6 @@ __attribute__((pure)) objheader_t *transRead2(unsigned int oid) {
         prehashInsert(oid, headerObj);
       }
 #endif
-
       return &objcopy[1];
 #else
       return objcopy;