build a simple spam filter prototype
[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.136.162");
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)|(136<<8)|162; //dc-1.calit2
48         mid[1] = (128<<24)|(195<<16)|(136<<8)|163; //dc-2.calit2
49         mid[2] = (128<<24)|(195<<16)|(136<<8)|164; //dc-3.calit2
50         mid[3] = (128<<24)|(195<<16)|(136<<8)|165; //dc-4.calit2
51         mid[4] = (128<<24)|(195<<16)|(136<<8)|166; //dc-5.calit2
52         mid[5] = (128<<24)|(195<<16)|(136<<8)|167; //dc-6.calit2
53         mid[6] = (128<<24)|(195<<16)|(136<<8)|168; //dc-7.calit2
54         mid[7] = (128<<24)|(195<<16)|(136<<8)|169; //dc-8.calit2
55  
56
57     ReadArrayObj[] a;
58     atomic {
59       a=global new ReadArrayObj[nthreads]; //create object a
60       mybarr = global new BarrierServer(nthreads);
61     }
62
63     mybarr.start(mid[0]);
64
65     ReadArrayObjWrap[] ra = new ReadArrayObjWrap[nthreads];
66
67     atomic {
68       for(int i=0;i<nthreads; i++) {
69         ra[i] = new ReadArrayObjWrap(global new ReadArrayObj(i, nthreads, a));
70       }
71     }
72
73     boolean waitfordone=true;
74     while(waitfordone) {
75       atomic {  //Master aborts are from here
76         if (mybarr.done)
77           waitfordone=false;
78       }
79     }
80
81     for(int i =0; i<nthreads; i++)
82       ra[i].ra.start(mid[i]);
83
84     for(int i =0; i<nthreads; i++)
85       ra[i].ra.join();
86
87         System.printString("Finished\n");
88   }
89 }