change due to changes of math class library
[IRC.git] / Robust / src / Benchmarks / oooJava / sor / JGFSORBench.java
1 /**************************************************************************
2  *                                                                         *
3  *         Java Grande Forum Benchmark Suite - Thread Version 1.0          *
4  *                                                                         *
5  *                            produced by                                  *
6  *                                                                         *
7  *                  Java Grande Benchmarking Project                       *
8  *                                                                         *
9  *                                at                                       *
10  *                                                                         *
11  *                Edinburgh Parallel Computing Centre                      *
12  *                                                                         * 
13  *                email: epcc-javagrande@epcc.ed.ac.uk                     *
14  *                                                                         *
15  *                                                                         *
16  *      This version copyright (c) The University of Edinburgh, 2001.      *
17  *                         All rights reserved.                            *
18  *                                                                         *
19  **************************************************************************/
20 public class JGFSORBench { 
21
22   int size; 
23   int[] datasizes;
24   int JACOBI_NUM_ITER;
25   long RANDOM_SEED;
26   public int nthreads;
27   public double Gtotal;
28
29   public JGFSORBench(int nthreads){
30     this.nthreads = nthreads;
31     datasizes = new int[4];
32     datasizes[0] = 1000;
33     datasizes[1] = 1500;
34     datasizes[2] = 2000;
35     datasizes[3] = 8000;
36     JACOBI_NUM_ITER = 100;
37     RANDOM_SEED = 10101010;
38     Gtotal = 0.0;
39   }
40
41   public void JGFsetsize(int size){
42     this.size = size;
43   }
44
45   public static void JGFkernel(JGFSORBench sor) {
46     int numthreads, datasize;
47     double[][] G;
48     int num_iterations;
49     long RANDOM_SEED;
50
51     numthreads = sor.nthreads;
52     datasize = sor.datasizes[sor.size];
53     G =  new double[datasize][datasize];
54     num_iterations = sor.JACOBI_NUM_ITER;
55     RANDOM_SEED = sor.RANDOM_SEED;
56
57     double omega = 1.25;
58     double omega_over_four = omega * 0.25;
59     double one_minus_omega = 1.0 - omega;
60
61     // update interior points
62        
63     SORWrap sorWrap = new SORWrap(new SORRunner(0,omega,G,num_iterations,numthreads, RANDOM_SEED));
64     sorWrap.sor.run();
65
66     for (int i=1; i<G.length-1; i++) {
67       for (int j=1; j<G.length-1; j++) {
68         sor.Gtotal += G[i][j];
69       }
70     }      
71
72   }
73
74   public int JGFvalidate(){
75
76     double refval[];
77     refval = new double[4];
78     refval[0] = 0.498574406322512;
79     refval[1] = 1.1234778980135105;
80     refval[2] = 1.9954895063582696;
81 //    refval[3] = 2.654895063582696;
82 //    refval[3] = 31.984487737222523;
83     refval[3]=31.984779;
84     double dev = Math.abs(Gtotal - refval[size]);
85     if (dev > 1.0e-6 ){
86       System.out.println("Validation failed");
87       System.out.println("Gtotal = " + Gtotal + "  dev=" + dev + "  sizeParam=" + size);
88     }else{
89       System.out.println("Validataion Success! dev="+dev);
90     }
91
92   }
93 }