change makefile and add instructions to compile and run LeeRouter
authoradash <adash>
Mon, 27 Apr 2009 19:58:00 +0000 (19:58 +0000)
committeradash <adash>
Mon, 27 Apr 2009 19:58:00 +0000 (19:58 +0000)
Robust/src/Benchmarks/SingleTM/LeeRouting/LeeRouter.java
Robust/src/Benchmarks/SingleTM/LeeRouting/README [new file with mode: 0644]
Robust/src/Benchmarks/SingleTM/LeeRouting/makefile

index e01422403942c84b8ab9d22bd9521a0b13aba8f0..41882a30d7bde0266bb551de894678e792170538 100644 (file)
@@ -72,6 +72,7 @@ public class LeeRouter {
   boolean DEBUG;
   boolean XML_REPORT;
 
   boolean DEBUG;
   boolean XML_REPORT;
 
+
   public LeeRouter(String file, boolean test, boolean debug, boolean rel) {
     //Constructor initializing
     MAX_SAMPLE_THRESHOLD = 60000;
   public LeeRouter(String file, boolean test, boolean debug, boolean rel) {
     //Constructor initializing
     MAX_SAMPLE_THRESHOLD = 60000;
@@ -645,7 +646,7 @@ public class LeeRouter {
     boolean exitByTimeout = false;
     int sampleInterval = 10000;
 
     boolean exitByTimeout = false;
     int sampleInterval = 10000;
 
-    System.out.println("Threads: " + numThreads);
+    System.out.println("Numthreads: " + numThreads);
 
     LeeThread[] thread = new LeeThread[numThreads];
 
 
     LeeThread[] thread = new LeeThread[numThreads];
 
@@ -657,12 +658,11 @@ public class LeeRouter {
       thread[i].start();
     //currentTime = System.currentTimeMillis();
 
       thread[i].start();
     //currentTime = System.currentTimeMillis();
 
-    //LeeThread.stop = true; // notify threads to stop
     for (int i = 0; i < numThreads; i++) {
       thread[i].join();
     }
     //long elapsedTime = startTime - currentTime;
     for (int i = 0; i < numThreads; i++) {
       thread[i].join();
     }
     //long elapsedTime = startTime - currentTime;
-    System.out.println("Numthreads: " + numThreads);
+    //System.out.println("Numthreads: " + numThreads);
     //System.out.println("Throughput:  " + throughput);
     //System.out.println("ElapsedTime: " + elapsedTime);
     lr.sanityCheck();
     //System.out.println("Throughput:  " + throughput);
     //System.out.println("ElapsedTime: " + elapsedTime);
     lr.sanityCheck();
diff --git a/Robust/src/Benchmarks/SingleTM/LeeRouting/README b/Robust/src/Benchmarks/SingleTM/LeeRouting/README
new file mode 100644 (file)
index 0000000..c022c7f
--- /dev/null
@@ -0,0 +1,46 @@
+Introduction
+------------
+
+  Lee's routing algorithm is one of the first algorithms used in 
+  automatic circuit routing. Lee's routing algorithm is interesting 
+  for TM because: it is an example of a real-world application, it 
+  contains an abundance of potential parallelism due to the number 
+  of routings that need to be performed in a typical realistic circuit, 
+  and this abundance of parallelism is difficult to exploit efficiently 
+  using locks. For example, routes are sorted by increasing length and 
+  each grid point is assigned a weight to attempt to keep routes away 
+  from pins. The layout contains over 3000 connections points and 
+  1506 interconnections, and the data is available in the file mainboard.txt. 
+
+Compiling and Running
+---------------------
+
+To build the application, simply run:
+
+    make 
+
+By default, this produces an executable named "LeeRouter.bin", which can then be
+run in the following manner:
+    ./LeeRouter.bin <number of threads> <input-filename>
+
+    low contention: ./LeeRouter.bin 1 sparseshort.txt 
+    high contention: ./LeeRouter.bin 8 sparseshort.txt
+
+For runs with a larger input file, (more info below) can be used
+instead:
+
+    low contention: ./LeeRouter.bin 1 mainboard.txt
+    high contention: ./LeeRouter.bin 8 mainboard.txt
+
+References
+----------
+
+[1] Ian Watson, Chris Kirkham and Mikel Luján.
+A Study of a Transactional Parallel Routing Algorithm.
+In Proceedings of the 16th International Conference on Parallel Architectures 
+and Compilation Techniques (PACT 2007), Brasov, Romania, Sept. 2007, pp 388-398.
+
+[2] Mohammad Ansari, Christos Kotselidis, Kim Jarvis, Mikel Luján, Chris Kirkham, and Ian Watson.
+Lee-TM: A Non-trivial Benchmark for Transactional Memory.
+In Proceedings of the 8th International Conference on Algorithms and Architectures 
+for Parallel Processing (ICA3PP 2008), Aiya Napa, Cyprus, June 2008.
index 45aa60e9fdd3b41537be887779ce8e3ef0144947..62fd7507f2e9987796c3cba6c12a1db973d967c1 100644 (file)
@@ -5,7 +5,7 @@ SRC=${MAINCLASS}.java \
        GridCell.java \
        LeeThread.java \
        WorkQueue.java 
        GridCell.java \
        LeeThread.java \
        WorkQueue.java 
-FLAGS=-mainclass ${MAINCLASS} -joptimize -debug -singleTM -optimize -dcopts -transstats -abcclose -stmdebug
+FLAGS=-mainclass ${MAINCLASS} -joptimize -debug -singleTM -optimize -dcopts -transstats -abcclose -stmdebug -stmstats
 default:
        ../../../buildscript ${FLAGS} -o ${MAINCLASS} ${SRC}
 
 default:
        ../../../buildscript ${FLAGS} -o ${MAINCLASS} ${SRC}