fc000ede35c511678e57aece0cd7f3ab182537e7
[IRC.git] / Robust / src / Benchmarks / Prefetch / run.sh
1 #!/bin/sh 
2
3 #set -x
4 MACHINELIST='dc-1.calit2.uci.edu dc-2.calit2.uci.edu dc-3.calit2.uci.edu dc-4.calit2.uci.edu dc-5.calit2.uci.edu dc-6.calit2.uci.edu dc-7.calit2.uci.edu dc-8.calit2.uci.edu'
5
6 LOGDIR=/home/adash/research/Robust/src/Benchmarks/Prefetch/runlog
7 TOPDIR=`pwd`
8
9 function run {
10   i=0;
11   DIR=`pwd`
12   while [ $i -lt $1 ]; do
13     echo "$DIR" > ~/.tmpdir
14     echo "bin=$3" > ~/.tmpvars
15     ct=0
16     MACHINES=''
17     for j in $MACHINELIST; do
18       if [ $ct -lt $2 ]; then
19          MACHINES='$MACHINES $j'
20       fi
21       let ct=$ct+1
22     done
23
24     if [ $2 -eq 2 ]; then 
25       arg=$ARGS2
26     fi
27     if [ $2 -eq 3 ]; then 
28       arg=$ARGS3
29     fi
30     if [ $2 -eq 4 ]; then 
31       arg=$ARGS4
32     fi
33     if [ $2 -eq 5 ]; then 
34       arg=$ARGS5
35     fi
36     if [ $2 -eq 6 ]; then 
37       arg=$ARGS6
38     fi
39     if [ $2 -eq 7 ]; then 
40       arg=$ARGS7
41     fi
42     if [ $2 -eq 8 ]; then 
43       arg=$ARGS8
44     fi
45     chmod +x ~/.tmpvars
46     for machine in `echo $MACHINES`
47     do
48       ssh ${machine} 'cd `cat ~/.tmpdir`; source ~/.tmpvars; ./$bin' &
49       echo ""
50     done
51     sleep 2
52     /usr/bin/time -f "%e" ./$3 master $arg 2>> ${LOGDIR}/${3}_${EXTENSION}.txt
53     echo "Terminating ... "
54     for machine in `echo $MACHINES`
55     do
56       ssh ${machine} 'source ~/.tmpvars; killall $bin'
57     done
58     sleep 2
59     i=`expr $i + 1`
60   done
61 }
62
63 function oneremote {
64   i=0;
65   DIR=`pwd` 
66   while [ $i -lt $1 ]; do
67     echo "$DIR" > ~/.tmpdir
68     echo "bin=$3" > ~/.tmpvars
69     echo "arg='$ARGS1'" > ~/.tmpargs
70     echo "logd=$LOGDIR" > ~/.tmplogdir
71     echo "ext=$EXTENSION" > ~/.tmpext
72     ./$3 &
73     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'
74     echo "Terminating ... "
75     killall $3
76     sleep 2
77     i=`expr $i + 1`
78   done
79 }
80
81 function localrun {
82   i=0;
83 #while [ $i -lt $1 ]; do
84 #    /usr/bin/time -f "%e" ./${NONPREFETCH} master $ARGS1 2>> ${LOGDIR}/${NONPREFETCH}_local_${EXTENSION}.txt
85 #   sleep 4
86 #   i=`expr $i + 1`
87 # done
88   i=0;
89   while [ $i -lt $1 ]; do
90     /usr/bin/time -f "%e" ./${NONPREFETCH_NONCACHE} master $ARGS1 2>> ${LOGDIR}/${NONPREFETCH_NONCACHE}_local_${EXTENSION}.txt
91     sleep 4
92     i=`expr $i + 1`
93   done
94 }
95
96 function callrun {
97   PREFETCH=${BENCHMARK}1.bin
98   NONPREFETCH=${BENCHMARK}1NP.bin
99   NONPREFETCH_NONCACHE=${BENCHMARK}1NPNC.bin
100   PREFETCH2=${BENCHMARK}2.bin
101   NONPREFETCH2=${BENCHMARK}2NP.bin
102   NONPREFETCH_NONCACHE2=${BENCHMARK}2NPNC.bin
103   PREFETCH3=${BENCHMARK}3.bin
104   NONPREFETCH3=${BENCHMARK}3NP.bin
105   NONPREFETCH_NONCACHE3=${BENCHMARK}3NPNC.bin
106   PREFETCH4=${BENCHMARK}4.bin
107   NONPREFETCH4=${BENCHMARK}4NP.bin
108   NONPREFETCH_NONCACHE4=${BENCHMARK}4NPNC.bin
109   PREFETCH5=${BENCHMARK}5.bin
110   NONPREFETCH5=${BENCHMARK}5NP.bin
111   NONPREFETCH_NONCACHE5=${BENCHMARK}5NPNC.bin
112   PREFETCH6=${BENCHMARK}6.bin
113   NONPREFETCH6=${BENCHMARK}6NP.bin
114   NONPREFETCH_NONCACHE6=${BENCHMARK}6NPNC.bin
115   PREFETCH7=${BENCHMARK}7.bin
116   NONPREFETCH7=${BENCHMARK}7NP.bin
117   NONPREFETCH_NONCACHE7=${BENCHMARK}7NPNC.bin
118   PREFETCH8=${BENCHMARK}8.bin
119   NONPREFETCH8=${BENCHMARK}8NP.bin
120   NONPREFETCH_NONCACHE8=${BENCHMARK}8NPNC.bin
121   cd $BMDIR 
122
123   echo "---------- Running local $BMDIR non-prefetch on 1 machine ---------- "
124   localrun 10
125
126   echo "---------- Running single thread remote $BMDIR non-prefetch + non-cache on 2 machines ---------- "
127 #  oneremote 1 1 $NONPREFETCH_NONCACHE
128   echo "---------- Running single thread remote $BMDIR non-prefetch on 2 machines ---------- "
129 #  oneremote 1 1 $NONPREFETCH
130   echo "---------- Running single thread remote $BMDIR prefetch on 2 machines ---------- "
131 #  oneremote 1 1 $PREFETCH
132
133   echo "---------- Running two threads $BMDIR non-prefetch + non-cache on 2 machines ---------- "
134   run 10 2 $NONPREFETCH_NONCACHE2 
135   echo "---------- Running two threads $BMDIR non-prefetch on 2 machines ---------- "
136 #  run 1 2 $NONPREFETCH2 
137   echo "---------- Running two threads $BMDIR prefetch on 2 machines ---------- "
138   run 10 2 $PREFETCH2 
139
140   echo "---------- Running three threads $BMDIR non-prefetch + non-cache on 3 machines ---------- "
141 #  run 10 3 $NONPREFETCH_NONCACHE3 
142   echo "---------- Running three threads $BMDIR non-prefetch on 3 machines ---------- "
143 #  run 1 3 $NONPREFETCH3 
144   echo "---------- Running three threads $BMDIR prefetch on 3 machines ---------- "
145 #  run 10 3 $PREFETCH3 
146
147   echo "---------- Running four threads $BMDIR non-prefetch + non-cache on 4 machines ---------- "
148   run 10 4 $NONPREFETCH_NONCACHE4 
149   echo "---------- Running four threads $BMDIR non-prefetch on 4 machines ---------- "
150 #  run 1 4 $NONPREFETCH4 
151   echo "---------- Running four threads $BMDIR prefetch on 4 machines ---------- "
152   run 10 4 $PREFETCH4 
153
154   echo "---------- Running five threads $BMDIR non-prefetch + non-cache on 5 machines ---------- "
155 #  run 1 5 $NONPREFETCH_NONCACHE5 
156   echo "---------- Running five threads $BMDIR non-prefetch on 5 machines ---------- "
157 #  run 1 5 $NONPREFETCH5 
158   echo "---------- Running five threads $BMDIR prefetch on 5 machines ---------- "
159 #  run 1 5 $PREFETCH5
160
161   echo "---------- Running six threads $BMDIR non-prefetch + non-cache on 6 machines ---------- "
162 #  run 1 6 $NONPREFETCH_NONCACHE6 
163   echo "---------- Running six threads $BMDIR non-prefetch on 6 machines ---------- "
164 #  run 1 6 $NONPREFETCH6 
165   echo "---------- Running six threads $BMDIR prefetch on 6 machines ---------- "
166 #  run 1 6 $PREFETCH6 
167
168
169   echo "---------- Running seven threads $BMDIR non-prefetch + non-cache on 7 machines ---------- "
170 #  run 1 7 $NONPREFETCH_NONCACHE7 
171   echo "---------- Running seven threads $BMDIR non-prefetch on 7 machines ---------- "
172 #  run 1 7 $NONPREFETCH7 
173   echo "---------- Running seven threads $BMDIR prefetch on 7 machines ---------- "
174 #  run 1 7 $PREFETCH7 
175
176   echo "---------- Running eight threads $BMDIR non-prefetch + non-cache on 8 machines ---------- "
177   run 10 8 $NONPREFETCH_NONCACHE8 
178   echo "---------- Running eight threads $BMDIR non-prefetch on 8 machines ---------- "
179 #  run 1 8 $NONPREFETCH8 
180   echo "---------- Running eight threads $BMDIR prefetch on 8 machines ---------- "
181   run 10 8 $PREFETCH8 
182
183   cd $TOPDIR
184 }
185
186 function callmicrorun {
187   PREFETCH=${BENCHMARK}1.bin
188   NONPREFETCH=${BENCHMARK}1NP.bin
189   NONPREFETCH_NONCACHE=${BENCHMARK}1NPNC.bin
190   cd $BMDIR 
191   echo "---------- Running local $BMDIR non-prefetch on 1 machine ---------- "
192 #  localrun 10
193   echo "---------- Running single thread remote $BMDIR non-prefetch + non-cache on 2 machines ---------- "
194   oneremote 10 1 $NONPREFETCH_NONCACHE
195   echo "---------- Running single thread remote $BMDIR non-prefetch on 2 machines ---------- "
196   oneremote 10 1 $NONPREFETCH
197   echo "---------- Running single thread remote $BMDIR prefetch on 2 machines ---------- "
198   oneremote 10 1 $PREFETCH
199   cd $TOPDIR
200 }
201
202 #benchmarks='em3dver10000100015'
203 #benchmarks='sorverD'
204 #benchmarks='10242dconv'
205 benchmarks='1152fft2d 1600fft2d 40962dconv 20482dconv mmver600 moldynverA'
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 | grep -v "^Command" | awk '{sum += $1} END {print " "sum/NR}' >> average.txt
237 done
238 echo "===========" >> average.txt
239 echo "" >> average.txt
240
241 echo "done"