Labyrinth works
authorjihoonl <jihoonl>
Mon, 29 Jun 2009 19:44:24 +0000 (19:44 +0000)
committerjihoonl <jihoonl>
Mon, 29 Jun 2009 19:44:24 +0000 (19:44 +0000)
Robust/src/Benchmarks/SingleTM/Labyrinth/Grid.java
Robust/src/Benchmarks/SingleTM/Labyrinth/Labyrinth.java
Robust/src/Benchmarks/SingleTM/Labyrinth/Router.java
Robust/src/Benchmarks/SingleTM/Labyrinth/makefile

index 583456229be6f7b1e7e864bceddca45bf703fe3a..024b5823883e58b26daa4ccc99e0168eae6f8466 100644 (file)
@@ -267,11 +267,6 @@ long* grid_getPointRef (grid_t* gridPtr, long x, long y, long z);
         points_unaligned[getPointIndex(x,y,z)][0] = value;
     }
 
-    public void setPoint(int index,int value)
-    {
-        points_unaligned[index][0] = value;
-    }
-
 
 /* =============================================================================
  * grid_addPath
@@ -302,8 +297,7 @@ void grid_addPath (grid_t* gridPtr, vector_t* pointVectorPtr);
 
         for(i = 0; i < n; i++) {
             int gridPointIndex = ((Integer)(pointVectorPtr.vector_at(i))).intValue();
-                        
-            setPoint(gridPointIndex,GRID_POINT_FULL);
+            points_unaligned[gridPointIndex][0] = GRID_POINT_FULL;            
         }
     }
 
index 57c06a0f5f20e0dfe2eda06a0359afa0b6752c2e..6a4ec533f5dabc7a5403efba2dd706860da86298 100644 (file)
@@ -155,9 +155,9 @@ public class Labyrinth extends Thread{
     }
 
     public void run() {
-      Barrier.enterBarrier();
-      Router.solve(routerArg);
-      Barrier.enterBarrier();
+            Barrier.enterBarrier();
+            Router.solve(routerArg);
+            Barrier.enterBarrier();
     }
 
     public void displayUsage() 
index e77a964b6838497426259262e918dee4dab8886c..dc84cb20ab70c9f2856d0ed7dcb96f80b715bd2a 100644 (file)
@@ -141,19 +141,19 @@ public class Router {
  * ============================================================================
  */
     private void PexpandToNeighbor(Grid myGridPtr, 
-                                    int x,int y,int z, int value,Queue_t queuePtr)
+                                    int x,int y,int z, int value,Queue_Int queuePtr)
     {
         if (myGridPtr.isPointValid(x,y,z)) {
             int neighborGridPointIndex = myGridPtr.getPointIndex(x,y,z);
             int neighborValue = myGridPtr.points_unaligned[neighborGridPointIndex][0];
             if (neighborValue == GRID_POINT_EMPTY) {
-                myGridPtr.setPoint(neighborGridPointIndex,value);
-                queuePtr.queue_push(new Integer(neighborGridPointIndex));
+                myGridPtr.points_unaligned[neighborGridPointIndex][0] = value;
+                queuePtr.queue_push(neighborGridPointIndex);
             } else if (neighborValue != GRID_POINT_FULL) {
                 
                 if (value < neighborValue) {
-                    myGridPtr.setPoint(neighborGridPointIndex,value);
-                    queuePtr.queue_push(new Integer(neighborGridPointIndex));
+                    myGridPtr.points_unaligned[neighborGridPointIndex][0] = value;
+                    queuePtr.queue_push(neighborGridPointIndex);
                 }
             }
         }
@@ -164,7 +164,7 @@ public class Router {
  * PdoExpansion
  * ============================================================================
  */
-    public boolean PdoExpansion (Router routerPtr,Grid myGridPtr,Queue_t queuePtr,
+    public boolean PdoExpansion (Router routerPtr,Grid myGridPtr,Queue_Int queuePtr,
                                   Coordinate srcPtr,Coordinate dstPtr)
     {
         int xCost = routerPtr.xCost;
@@ -180,25 +180,24 @@ public class Router {
 
         int srcGridPointIndex = myGridPtr.getPointIndex(srcPtr.x,srcPtr.y,srcPtr.z);
 
-        queuePtr.queue_push(new Integer(srcGridPointIndex));
+        queuePtr.queue_push(srcGridPointIndex);
  //       System.out.println("dstPtr :\tx = " + dstPtr.x + "\ty = " + dstPtr.y + "\tz = " + dstPtr.z); 
         myGridPtr.setPoint(srcPtr.x,srcPtr.y,srcPtr.z,0);
         myGridPtr.setPoint(dstPtr.x,dstPtr.y,dstPtr.z,GRID_POINT_EMPTY);
         int dstGridPointIndex = myGridPtr.getPointIndex(dstPtr.x,dstPtr.y,dstPtr.z);
         boolean isPathFound = false;
+        int[] x = new int[1];
+        int[] y = new int[1];
+        int[] z = new int[1];
 
         while (!queuePtr.queue_isEmpty()) {
-            int gridPointIndex = ((Integer)queuePtr.queue_pop()).intValue();
+            int gridPointIndex = queuePtr.queue_pop();
 
 //            System.out.println("gridPointIndex = " +gridPointIndex);
             if(gridPointIndex == dstGridPointIndex) {
                 isPathFound = true;
                 break;
             }
-
-            int[] x = new int[1];
-            int[] y = new int[1];
-            int[] z = new int[1];
                         
             myGridPtr.getPointIndices(gridPointIndex,x,y,z);
             int value = myGridPtr.points_unaligned[gridPointIndex][0];
@@ -350,7 +349,7 @@ public class Router {
         Grid gridPtr = mazePtr.gridPtr;
         Grid myGridPtr = Grid.alloc(gridPtr.width,gridPtr.height,gridPtr.depth);
         int bendCost = routerPtr.bendCost;
-        Queue_t myExpansionQueuePtr = Queue_t.queue_alloc(-1);
+        Queue_Int myExpansionQueuePtr = Queue_Int.queue_alloc(-1);
 
         /*
          * Iterate over work list to route each path. This involves an
@@ -387,8 +386,7 @@ public class Router {
             atomic {
                 Grid.copy(myGridPtr, gridPtr); /* ok if not most up-to-date */
                                
-                boolean result = routerPtr.PdoExpansion(routerPtr,myGridPtr,myExpansionQueuePtr,srcPtr,dstPtr);
-                if(result) {
+                if(routerPtr.PdoExpansion(routerPtr,myGridPtr,myExpansionQueuePtr,srcPtr,dstPtr)) {
                     pointVectorPtr = routerPtr.PdoTraceback(gridPtr,myGridPtr,dstPtr,bendCost);
 
                     if (pointVectorPtr != null) {
@@ -418,6 +416,8 @@ public class Router {
             pathVectorListPtr.insert(myPathVectorPtr);
         }
 
+        myGridPtr = null;
+        myExpansionQueuePtr = null;
 //        System.out.println("Final Grid: ");
 //        gridPtr.print();
         
index 83f0130f90551446a7ced9c874e7a62bbf8f62b9..fb928875ef3f4362afe501686f18c1f7394fd27e 100644 (file)
@@ -2,6 +2,7 @@ MAINCLASS=Labyrinth
 SRC=ttttmp${MAINCLASS}.java \
        ../common/Pair.java \
        ttttmpQueue_t.java \
+       ttttmpQueue_Int.java \
        Vector_t.java \
        List_t.java \
        List_Node.java \
@@ -22,11 +23,13 @@ default:
        cpp Router.java > tmpRouter.java
        cpp Maze.java > tmpMaze.java
        cpp Queue_t.java > tmpQueue_t.java
+       cpp Queue_Int.java > tmpQueue_Int.java
        ./extractLines tmp${MAINCLASS}.java
        ./extractLines tmpGrid.java
        ./extractLines tmpRouter.java
        ./extractLines tmpMaze.java
        ./extractLines tmpQueue_t.java
+       ./extractLines tmpQueue_Int.java
        ../../../buildscript ${FLAGS} -o ${MAINCLASS} ${SRC}
        rm ttt*.java tmp*.java
 
@@ -40,11 +43,13 @@ test:
        cpp Router.java > tmpRouter.java
        cpp Maze.java > tmpMaze.java
        cpp Queue_t.java > tmpQueue_t.java
+       cpp Queue_Int.java > tmpQueue_Int.java
        ./extractLines tmp${MAINCLASS}.java
        ./extractLines tmpGrid.java
        ./extractLines tmpRouter.java
        ./extractLines tmpMaze.java
        ./extractLines tmpQueue_t.java
+       ./extractLines tmpQueue_Int.java
        ../../../buildscript ${FLAGS} -o ${MAINCLASS} ${SRC}
        rm ttt*.java tmp*.java
        ./Labyrinth.bin -i inputs/random-x32-y32-z3-n64.txt