b4ebdbcc606dcf0f49776a3fc020dcdce34ff116
[IRC.git] / Robust / src / Benchmarks / Prefetch / run.sh
1 #!/bin/sh 
2
3 #set -x
4 MACHINES2='dw-11.eecs.uci.edu'
5 MACHINES3='dw-11.eecs.uci.edu dw-12.eecs.uci.edu'
6 MACHINES4='dw-11.eecs.uci.edu dw-12.eecs.uci.edu dw-13.eecs.uci.edu'
7 MACHINES5='dw-11.eecs.uci.edu dw-12.eecs.uci.edu dw-13.eecs.uci.edu dw-14.eecs.uci.edu'
8 MACHINES6='dw-11.eecs.uci.edu dw-12.eecs.uci.edu dw-13.eecs.uci.edu dw-14.eecs.uci.edu dw-15.eecs.uci.edu'
9 MACHINES7='dw-11.eecs.uci.edu dw-12.eecs.uci.edu dw-13.eecs.uci.edu dw-14.eecs.uci.edu dw-15.eecs.uci.edu dw-16.eecs.uci.edu'
10 MACHINES8='dw-11.eecs.uci.edu dw-12.eecs.uci.edu dw-13.eecs.uci.edu dw-14.eecs.uci.edu dw-15.eecs.uci.edu dw-16.eecs.uci.edu dw-17.eecs.uci.edu'
11 LOGDIR=/home/adash/research/Robust/src/Benchmarks/Prefetch/runlog
12 TOPDIR=`pwd`
13
14 function run {
15   i=0;
16   DIR=`pwd`
17   while [ $i -lt $1 ]; do
18     echo "$DIR" > ~/.tmpdir
19     echo "bin=$3" > ~/.tmpvars
20     if [ $2 -eq 2 ]; then 
21       arg=$ARGS2
22       MACHINES=$MACHINES2
23     fi
24     if [ $2 -eq 3 ]; then 
25       arg=$ARGS3
26       MACHINES=$MACHINES3
27     fi
28     if [ $2 -eq 4 ]; then 
29       arg=$ARGS4
30       MACHINES=$MACHINES4
31     fi
32     if [ $2 -eq 5 ]; then 
33       arg=$ARGS5
34       MACHINES=$MACHINES5
35     fi
36     if [ $2 -eq 6 ]; then 
37       arg=$ARGS6
38       MACHINES=$MACHINES6
39     fi
40     if [ $2 -eq 7 ]; then 
41       arg=$ARGS7
42       MACHINES=$MACHINES7
43     fi
44     if [ $2 -eq 8 ]; then 
45       arg=$ARGS8
46       MACHINES=$MACHINES8
47     fi
48     chmod +x ~/.tmpvars
49     for machine in `echo $MACHINES`
50     do
51       ssh ${machine} 'cd `cat ~/.tmpdir`; source ~/.tmpvars; ./$bin' &
52       echo ""
53     done
54     sleep 2
55     /usr/bin/time -f "%e" ./$3 master $arg 2>> ${LOGDIR}/${3}_${EXTENSION}.txt
56     echo "Terminating ... "
57     for machine in `echo $MACHINES`
58     do
59       ssh ${machine} 'source ~/.tmpvars; killall $bin'
60     done
61     sleep 2
62     i=`expr $i + 1`
63   done
64 }
65
66 function oneremote {
67   i=0;
68   DIR=`pwd` 
69   while [ $i -lt $1 ]; do
70     echo "$DIR" > ~/.tmpdir
71     echo "bin=$3" > ~/.tmpvars
72     echo "arg='$ARGS1'" > ~/.tmpargs
73     echo "logd=$LOGDIR" > ~/.tmplogdir
74     echo "ext=$EXTENSION" > ~/.tmpext
75     ./$3 &
76     ssh $MACHINES2 'cd `cat ~/.tmpdir`; source ~/.tmpvars; source ~/.tmpargs; source ~/.tmplogdir; source ~/.tmpext; /usr/bin/time -f "%e" ./$bin master $arg 2>> ${logd}/${bin}_remote_${ext}.txt'
77     echo "Terminating ... "
78     killall $3
79     sleep 2
80     i=`expr $i + 1`
81   done
82 }
83
84 function localrun {
85   i=0;
86 #while [ $i -lt $1 ]; do
87 #    /usr/bin/time -f "%e" ./${NONPREFETCH} master $ARGS1 2>> ${LOGDIR}/${NONPREFETCH}_local_${EXTENSION}.txt
88 #   sleep 4
89 #   i=`expr $i + 1`
90 # done
91   i=0;
92   while [ $i -lt $1 ]; do
93     /usr/bin/time -f "%e" ./${NONPREFETCH_NONCACHE} master $ARGS1 2>> ${LOGDIR}/${NONPREFETCH_NONCACHE}_local_${EXTENSION}.txt
94     sleep 4
95     i=`expr $i + 1`
96   done
97 }
98
99 function callrun {
100   PREFETCH=${BENCHMARK}1.bin
101   NONPREFETCH=${BENCHMARK}1NP.bin
102   NONPREFETCH_NONCACHE=${BENCHMARK}1NPNC.bin
103   PREFETCH2=${BENCHMARK}2.bin
104   NONPREFETCH2=${BENCHMARK}2NP.bin
105   NONPREFETCH_NONCACHE2=${BENCHMARK}2NPNC.bin
106   PREFETCH3=${BENCHMARK}3.bin
107   NONPREFETCH3=${BENCHMARK}3NP.bin
108   NONPREFETCH_NONCACHE3=${BENCHMARK}3NPNC.bin
109   PREFETCH4=${BENCHMARK}4.bin
110   NONPREFETCH4=${BENCHMARK}4NP.bin
111   NONPREFETCH_NONCACHE4=${BENCHMARK}4NPNC.bin
112   PREFETCH5=${BENCHMARK}5.bin
113   NONPREFETCH5=${BENCHMARK}5NP.bin
114   NONPREFETCH_NONCACHE5=${BENCHMARK}5NPNC.bin
115   PREFETCH6=${BENCHMARK}6.bin
116   NONPREFETCH6=${BENCHMARK}6NP.bin
117   NONPREFETCH_NONCACHE6=${BENCHMARK}6NPNC.bin
118   PREFETCH7=${BENCHMARK}7.bin
119   NONPREFETCH7=${BENCHMARK}7NP.bin
120   NONPREFETCH_NONCACHE7=${BENCHMARK}7NPNC.bin
121   PREFETCH8=${BENCHMARK}8.bin
122   NONPREFETCH8=${BENCHMARK}8NP.bin
123   NONPREFETCH_NONCACHE8=${BENCHMARK}8NPNC.bin
124   cd $BMDIR 
125
126   echo "---------- Running local $BMDIR non-prefetch on 1 machine ---------- "
127  # localrun 1
128
129   echo "---------- Running single thread remote $BMDIR non-prefetch + non-cache on 2 machines ---------- "
130 #  oneremote 1 1 $NONPREFETCH_NONCACHE
131   echo "---------- Running single thread remote $BMDIR non-prefetch on 2 machines ---------- "
132 #  oneremote 1 1 $NONPREFETCH
133   echo "---------- Running single thread remote $BMDIR prefetch on 2 machines ---------- "
134 #  oneremote 1 1 $PREFETCH
135
136   echo "---------- Running two threads $BMDIR non-prefetch + non-cache on 2 machines ---------- "
137   run 1 2 $NONPREFETCH_NONCACHE2 
138   echo "---------- Running two threads $BMDIR non-prefetch on 2 machines ---------- "
139   run 1 2 $NONPREFETCH2 
140   echo "---------- Running two threads $BMDIR prefetch on 2 machines ---------- "
141   run 1 2 $PREFETCH2 
142
143   echo "---------- Running three threads $BMDIR non-prefetch + non-cache on 3 machines ---------- "
144   run 1 3 $NONPREFETCH_NONCACHE3 
145   echo "---------- Running three threads $BMDIR non-prefetch on 3 machines ---------- "
146   run 1 3 $NONPREFETCH3 
147   echo "---------- Running three threads $BMDIR prefetch on 3 machines ---------- "
148   run 1 3 $PREFETCH3 
149
150   echo "---------- Running four threads $BMDIR non-prefetch + non-cache on 4 machines ---------- "
151   run 1 4 $NONPREFETCH_NONCACHE4 
152   echo "---------- Running four threads $BMDIR non-prefetch on 4 machines ---------- "
153   run 1 4 $NONPREFETCH4 
154   echo "---------- Running four threads $BMDIR prefetch on 4 machines ---------- "
155   run 1 4 $PREFETCH4 
156
157   echo "---------- Running five threads $BMDIR non-prefetch + non-cache on 5 machines ---------- "
158   run 1 5 $NONPREFETCH_NONCACHE5 
159   echo "---------- Running five threads $BMDIR non-prefetch on 5 machines ---------- "
160   run 1 5 $NONPREFETCH5 
161   echo "---------- Running five threads $BMDIR prefetch on 5 machines ---------- "
162   run 1 5 $PREFETCH5
163
164   echo "---------- Running six threads $BMDIR non-prefetch + non-cache on 6 machines ---------- "
165   run 1 6 $NONPREFETCH_NONCACHE6 
166   echo "---------- Running six threads $BMDIR non-prefetch on 6 machines ---------- "
167   run 1 6 $NONPREFETCH6 
168   echo "---------- Running six threads $BMDIR prefetch on 6 machines ---------- "
169   run 1 6 $PREFETCH6 
170
171
172   echo "---------- Running seven threads $BMDIR non-prefetch + non-cache on 7 machines ---------- "
173   run 1 7 $NONPREFETCH_NONCACHE7 
174   echo "---------- Running seven threads $BMDIR non-prefetch on 7 machines ---------- "
175   run 1 7 $NONPREFETCH7 
176   echo "---------- Running seven threads $BMDIR prefetch on 7 machines ---------- "
177   run 1 7 $PREFETCH7 
178
179   echo "---------- Running eight threads $BMDIR non-prefetch + non-cache on 8 machines ---------- "
180   run 1 8 $NONPREFETCH_NONCACHE8 
181   echo "---------- Running eight threads $BMDIR non-prefetch on 8 machines ---------- "
182   run 1 8 $NONPREFETCH8 
183   echo "---------- Running eight threads $BMDIR prefetch on 8 machines ---------- "
184   run 1 8 $PREFETCH8 
185
186   cd $TOPDIR
187 }
188
189 function callmicrorun {
190   PREFETCH=${BENCHMARK}1.bin
191   NONPREFETCH=${BENCHMARK}1NP.bin
192   NONPREFETCH_NONCACHE=${BENCHMARK}1NPNC.bin
193   cd $BMDIR 
194   echo "---------- Running local $BMDIR non-prefetch on 1 machine ---------- "
195 #  localrun 10
196   echo "---------- Running single thread remote $BMDIR non-prefetch + non-cache on 2 machines ---------- "
197   oneremote 10 1 $NONPREFETCH_NONCACHE
198   echo "---------- Running single thread remote $BMDIR non-prefetch on 2 machines ---------- "
199   oneremote 10 1 $NONPREFETCH
200   echo "---------- Running single thread remote $BMDIR prefetch on 2 machines ---------- "
201   oneremote 10 1 $PREFETCH
202   cd $TOPDIR
203 }
204
205 benchmarks='mmver600 mmver200 moldynverA sorverD em3dver10000100015'
206
207 echo "---------- Clean old files ---------- "
208 rm runlog/*
209 for b in `echo $benchmarks`
210 do
211   bm=`grep $b bm.txt`
212   BENCHMARK=`echo $bm | cut -f1 -d":"`
213   BMDIR=`echo $bm | cut -f2 -d":"`
214   ARGS1=`echo $bm | cut -f3 -d":"`
215   ARGS2=`echo $bm | cut -f4 -d":"`
216   ARGS3=`echo $bm | cut -f5 -d":"`
217   ARGS4=`echo $bm | cut -f6 -d":"`
218   ARGS5=`echo $bm | cut -f7 -d":"`
219   ARGS6=`echo $bm | cut -f8 -d":"`
220   ARGS7=`echo $bm | cut -f9 -d":"`
221   ARGS8=`echo $bm | cut -f10 -d":"`
222   EXTENSION=`echo $bm | cut -f11 -d":"`
223   name1='array'
224   name2='chase'
225   if [ $b == $name1 ] || [ $b == $name2 ]; then
226   callmicrorun
227   else
228   callrun
229   fi
230 done
231
232 #----------Calulates  the averages ----------- 
233 for file in `ls runlog/*.txt`
234 do
235   echo -n $file >> average.txt
236   cat $file | awk '{sum += $1} END {print " "sum/NR}' >> average.txt
237 done
238 echo "===========" >> average.txt
239 echo "" >> average.txt
240
241 echo "done"