SOR changes to single java version
authoradash <adash>
Sun, 13 Dec 2009 06:03:16 +0000 (06:03 +0000)
committeradash <adash>
Sun, 13 Dec 2009 06:03:16 +0000 (06:03 +0000)
Robust/src/Benchmarks/Prefetch/SOR/javasingle/JGFSORBench.java
Robust/src/Benchmarks/Prefetch/SOR/javasingle/SORRunner.java

index 325baefbd3843b1c2e73e02b6da549adc916d9c2..c5d8c78020f95c34d1c327aabab89ef634c63dc6 100644 (file)
@@ -44,14 +44,15 @@ public class JGFSORBench {
 
   public static void JGFkernel(JGFSORBench sor) {
     int numthreads, datasize;
-
     double[][] G;
     int num_iterations;
+    long RANDOM_SEED;
 
     numthreads = sor.nthreads;
     datasize = sor.datasizes[sor.size];
     G =  new double[datasize][];
     num_iterations = sor.JACOBI_NUM_ITER;
+    RANDOM_SEED = sor.RANDOM_SEED;
 
     double omega = 1.25;
     double omega_over_four = omega * 0.25;
@@ -63,20 +64,21 @@ public class JGFSORBench {
 
     SORWrap[] thobjects = new SORWrap[numthreads];
 
-       for(int i=0;i<numthreads;i++) {
-           thobjects[i] =  new SORWrap( new SORRunner(i,omega,G,num_iterations,numthreads));
-       }
+    for(int i=0;i<numthreads;i++) {
+      thobjects[i] =  new SORWrap(new SORRunner(i,omega,G,num_iterations,numthreads, RANDOM_SEED));
+    }
 
     for(int i=0;i<numthreads;i++) {
       thobjects[i].sor.run();
     }
 
     //JGFInstrumentor.stopTimer("Section2:SOR:Kernel", instr.timers);
-       for (int i=1; i<G.length-1; i++) {
-           for (int j=1; j<G.length-1; j++) {
-               sor.Gtotal += G[i][j];
-           }
-       }               
+    for (int i=1; i<G.length-1; i++) {
+      for (int j=1; j<G.length-1; j++) {
+        sor.Gtotal += G[i][j];
+      }
+    }               
+    //System.out.println("DEBUG: G.length= " + G.length+" sor.Gtotal= " + sor.Gtotal);
   }
 
   public int JGFvalidate(){
index 94d72e50b7ca7cd06bbac72718747b1ec36e5879..2551d44b6c424fd985c8c67dc7b4c5bb2740153c 100644 (file)
@@ -24,13 +24,15 @@ class SORRunner extends Thread {
   int id, num_iterations;
   double G[][],omega;
   int nthreads;
+  long RANDOM_SEED;
 
-  public SORRunner(int id, double omega, double G[][], int num_iterations, int nthreads) {
+  public SORRunner(int id, double omega, double G[][], int num_iterations, int nthreads, long RANDOM_SEED) {
     this.id = id;
     this.omega=omega;
     this.G=G;
     this.num_iterations=num_iterations;
     this.nthreads = nthreads;
+    this.RANDOM_SEED =  RANDOM_SEED;
   }
 
   public void run() {
@@ -55,12 +57,12 @@ class SORRunner extends Thread {
     iupper = ((tmpid+1)*slice)+1;
     if (iupper > Mm1) iupper =  Mm1+1;
     if (tmpid == (numthreads-1)) iupper = Mm1+1;
-    G[0]= new double[N];
+    G[0]=new double[N];
     for(int i=ilow;i<iupper;i++) {
-      G[i]= new double[N];
+      G[i]=new double[N];
     }
 
-    Random rand=new Random();
+    Random rand=new Random(RANDOM_SEED);
     double[] R = G[0];
     for(int j=0;j<M;j++)
       R[j]=rand.nextDouble() * 1e-6;
@@ -131,7 +133,6 @@ class SORRunner extends Thread {
           }
         }
       }
-
     }//end of for
   } //end of run()
 }