Scripts and Benchmarks changed to function with 8 machines
[IRC.git] / Robust / src / Benchmarks / Prefetch / MicroBenchmarks / MultiMCReadcommit.java
1 public class ReadArrayObj extends Thread {
2   int id, nthreads;
3   ReadArrayObj[] myra;
4   int val;
5
6   public ReadArrayObj() {
7   }
8
9   public ReadArrayObj(int id, int nthreads, ReadArrayObj[] ra) {
10     this.id = id;
11     this.nthreads = nthreads;
12     myra = ra;
13   }
14
15   public void run() {
16     int tmpid;
17     Barrier barr;
18     barr = new Barrier("128.195.175.84");
19     //Create array objects locally
20     atomic {
21       tmpid = id;
22       myra[tmpid] = global new ReadArrayObj();
23       myra[tmpid].val = tmpid*10+1;
24     }
25
26     Barrier.enterBarrier(barr);
27
28     //All machines reading data from array
29     int val;
30     for(int i=0; i<10000; i++) {
31       atomic {
32         for(int j=0; j<nthreads; j++) {
33           val = myra[j].val;
34         }
35       }
36     }
37   }
38
39   public static void main(String[] args) {
40     int nthreads;
41     BarrierServer mybarr;
42     if(args.length>0) {
43       nthreads = Integer.parseInt(args[0]);
44     }
45
46     int[] mid = new int[8];
47     mid[0] = (128<<24)|(195<<16)|(175<<8)|84;//dw-10
48     mid[1] = (128<<24)|(195<<16)|(175<<8)|85;//dw-11
49     mid[2] = (128<<24)|(195<<16)|(175<<8)|86;//dw-12
50     mid[3] = (128<<24)|(195<<16)|(175<<8)|87;//dw-13
51     mid[4] = (128<<24)|(195<<16)|(175<<8)|88;//dw-14
52     mid[5] = (128<<24)|(195<<16)|(175<<8)|89;//dw-15
53     mid[6] = (128<<24)|(195<<16)|(175<<8)|90;//dw-16
54     mid[7] = (128<<24)|(195<<16)|(175<<8)|91;//dw-17
55
56     ReadArrayObj[] a;
57     atomic {
58       a=global new ReadArrayObj[nthreads]; //create object a
59       mybarr = global new BarrierServer(nthreads);
60     }
61
62     mybarr.start(mid[0]);
63
64     ReadArrayObjWrap[] ra = new ReadArrayObjWrap[nthreads];
65
66     atomic {
67       for(int i=0;i<nthreads; i++) {
68         ra[i] = new ReadArrayObjWrap(global new ReadArrayObj(i, nthreads, a));
69       }
70     }
71
72     boolean waitfordone=true;
73     while(waitfordone) {
74       atomic {  //Master aborts are from here
75         if (mybarr.done)
76           waitfordone=false;
77       }
78     }
79
80     for(int i =0; i<nthreads; i++)
81       ra[i].ra.start(mid[i]);
82
83     for(int i =0; i<nthreads; i++)
84       ra[i].ra.join();
85
86         System.printString("Finished\n");
87   }
88 }