Remove __thread as it does not work on Tilera and use newflag for Task version
[IRC.git] / Robust / src / Benchmarks / Scheduling / GC / JGFMonteCarlo / JGFMonteCarloBench.java
1 /** Banboo Version  **/
2
3 /**************************************************************************
4 *                                                                         *
5 *         Java Grande Forum Benchmark Suite - Thread Version 1.0          *
6 *                                                                         *
7 *                            produced by                                  *
8 *                                                                         *
9 *                  Java Grande Benchmarking Project                       *
10 *                                                                         *
11 *                                at                                       *
12 *                                                                         *
13 *                Edinburgh Parallel Computing Centre                      *
14 *                                                                         * 
15 *                email: epcc-javagrande@epcc.ed.ac.uk                     *
16 *                                                                         *
17 *                                                                         *
18 *      This version copyright (c) The University of Edinburgh, 2001.      *
19 *                         All rights reserved.                            *
20 *                                                                         *
21 **************************************************************************/
22
23 task t1(StartupObject s{initialstate}) {
24     //System.printString("task t1\n");
25     
26     int datasize = 10000;  //should be times of 2
27     int nruns = 62 * 62;  //16 * 16;
28     int group = 62; // 16;
29     
30     AppDemo ad = newflag AppDemo(datasize, nruns, group){merge};
31     
32     ad.initSerial();
33     
34     for(int i = 0; i < group; i++) {
35         AppDemoRunner adr = newflag AppDemoRunner(i, 
36                                                       nruns, 
37                                                       group, 
38                                                       ad){run};
39     }
40     
41     taskexit(s{!initialstate});
42 }
43
44 task t2(AppDemoRunner adr{run}) {
45     //System.printString("task t2\n");
46     
47     //  Now do the computation.
48     adr.run();
49     
50     taskexit(adr{!run, turnin});
51 }
52
53 task t3(AppDemo ad{merge}, AppDemoRunner adr{turnin}) {
54     //System.printString("task t3\n");
55     boolean isFinish = ad.processResults(adr.results);
56     
57     if(isFinish) {
58         taskexit(ad{!merge, validate}, adr{!turnin});
59     }
60     taskexit(adr{!turnin});
61 }
62
63 task t4(AppDemo ad{validate}) {
64     //System.printString("task t4\n");
65     float refval = (float)(-0.0333976656762814);
66     float dev = Math.abs(ad.JGFavgExpectedReturnRateMC - refval);
67     if (dev > 1.0e-12 ){
68       //System.printString("Validation failed");
69       //System.printString(" expectedReturnRate= " + (int)(ad.JGFavgExpectedReturnRateMC*10000) + "  " + (int)(dev*10000) + "\n");
70     }
71     taskexit(ad{!validate});
72 }
73