Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Annotation of /benchmarks/scripts/run-one_sh.in
ViewVC logotype

Annotation of /benchmarks/scripts/run-one_sh.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3165 - (view) (download)

1 : jhr 1538 #!/bin/ksh
2 :     #
3 : jhr 3057 # A script for running a single Diderot benchmark test. The results are output to a
4 :     # JSON file named <bmark>-report.<date>-<time>. There is also a log file produced
5 :     # that contains the build messages.
6 : jhr 1538 #
7 :     # usage:
8 : jhr 1656 # scripts/run-one.sh bmark nruns nprocs nworkers [diderotc-flags] [-- runtime-flags]
9 : jhr 1575 # where
10 : jhr 1656 # bmark name of benchmark
11 :     # nruns number of runs per benchmark version
12 :     # nprocs max number of processors for parallel version (0 means no parallel run)
13 :     # nworkers max number of workers/CU for GPU version (0 means no GPU run)
14 : jhr 1538 #
15 :     # @configure_input@
16 :     #
17 :    
18 :     # this script should be run from the rtest directory
19 :     #
20 :     HERE=$(pwd)
21 :     if [ ! -d $HERE/programs ] ; then
22 :     echo "run script from benchmarks directory"
23 :     exit 1
24 :     fi
25 : jhr 1575
26 : jhr 3057 # flags to enable/disable the running of specific benchmarks
27 :     #
28 :     if [ x"@TARGET_TEEM@" = x ] ; then
29 :     ENABLE_TEEM=no
30 :     else
31 :     ENABLE_TEEM=yes
32 :     fi
33 :     if [ x"@TARGET_SEQ@" = x ] ; then
34 :     ENABLE_SEQ=no
35 :     else
36 :     ENABLE_SEQ=yes
37 :     fi
38 :     if [ x"@TARGET_PAR@" = x ] ; then
39 :     ENABLE_PAR=no
40 :     else
41 :     ENABLE_PAR=yes
42 :     fi
43 :     if [ x"@TARGET_CL@" = x ] ; then
44 :     ENABLE_CL=no
45 :     else
46 :     ENABLE_CL=yes
47 :     fi
48 :     if [ x"@TARGET_CUDA@" = x ] ; then
49 :     ENABLE_CUDA=no
50 :     else
51 :     ENABLE_CUDA=yes
52 :     fi
53 :    
54 :     function usage {
55 :     echo "usage:"
56 :     echo " scripts/run-one.sh bmark nruns nprocs nworkers [diderotc-flags] [-- runtime-flags]"
57 :     exit 1
58 :     }
59 :    
60 : jhr 1575 # get the name of the benchmark, number of runs, and max number of processors
61 :     #
62 : jhr 1656 if (( $# >= 4 )) ; then
63 : jhr 1575 BMARK=$1; shift
64 :     NRUNS=$1; shift
65 :     MAXNP=$1; shift
66 : jhr 1656 MAXNW=$1; shift
67 : jhr 1575 if [ ! -d programs/$BMARK ] ; then
68 :     echo "$BMARK is not a valid benchmark name"
69 :     exit 1
70 :     fi
71 :     else
72 :     usage 1
73 :     fi
74 :    
75 :     # process the rest of the command-line arguments
76 :     #
77 :     DIDEROTC_FLAGS=""
78 :     RUNTIME_FLAGS=""
79 :     # get diderotc flags
80 :     while [ $# -ne 0 ] ; do
81 :     case $1 in
82 :     --) shift; break ;; # switch modes
83 :     -*) DIDEROTC_FLAGS="$DIDEROTC_FLAGS $1" ;;
84 :     *) echo "unrecognized argument"
85 :     usage 1
86 :     ;;
87 :     esac
88 :     shift
89 :     done
90 :     # get runtime flags
91 : jhr 1657 if [ $# -gt 0 ] ; then
92 : jhr 1656 RUNTIME_FLAGS="$*"
93 :     else
94 :     RUNTIME_FLAGS=""
95 :     fi
96 : jhr 1575
97 : jhr 1576 HOSTNAME=$( hostname -s )
98 : jhr 3057 DATE=$( date +"%F" )
99 :     TIME=$( date +"%H-%M-%S" )
100 :     LOG=$HERE/$BMARK-log.$DATE-$TIME
101 :     REPORT=$HERE/$BMARK-report.$DATE-$TIME
102 :     DIDEROTC_VERSION=$(@DIDEROTC@ --version)
103 : jhr 1575
104 :     # compile the benchmark
105 :     #
106 :     cd programs/$BMARK
107 :     if [ ! -f Makefile ] ; then
108 :     echo "no Makefile for $BMARK; run configure to generate"
109 :     exit 1
110 :     fi
111 :     echo "********** $BMARK **********" > $LOG
112 : jhr 3052 # clean out old executables
113 : jhr 1575 make clean 2>> $LOG 1>> $LOG
114 : jhr 1909 # customize build targets
115 : jhr 3057 TARGETS="@TARGET_TEEM@ @TARGET_SEQ@"
116 :     if [ $ENABLE_PAR = yes ] ; then
117 :     if (($MAXNP > 0)) ; then
118 :     TARGETS="$TARGETS bmark-par"
119 :     fi
120 : jhr 1909 fi
121 :     if (($MAXNW > 0)) ; then
122 : jhr 3057 if [ $ENABLE_CL = yes ] ; then
123 :     TARGETS="$TARGETS bmark-cl"
124 :     fi
125 :     if [ $ENABLE_CUDA = yes ] ; then
126 :     TARGETS="$TARGETS bmark-cuda"
127 :     fi
128 : jhr 1909 fi
129 : jhr 3057 #
130 : jhr 1909 # rebuild $TARGETS using the given DIDEROTC_FLAGS
131 : jhr 3057 #
132 : jhr 1575 if [ x"$DIDEROTC_FLAGS" != x ] ; then
133 : jhr 1909 make DIDEROTC_FLAGS="$DIDEROTC_FLAGS" $TARGETS 2>> $LOG 1>> $LOG
134 : jhr 1575 else
135 : jhr 1909 make $TARGETS 2>> $LOG 1>> $LOG
136 : jhr 1575 fi
137 :     if [ "$?" -eq "0" ] ; then
138 : jhr 3057 #
139 :     # JSON header
140 :     #
141 :     cat - > $REPORT <<XXXX
142 :     {
143 :     "bmark" : "$BMARK",
144 :     "host" : "$HOSTNAME",
145 :     "version" : "$DIDEROTC_VERSION",
146 :     "nruns" : $NRUNS,
147 :     "max-nprocs" : $MAXNP,
148 :     "max-nworkers" : $MAXNP,
149 :     "date" : "$DATE",
150 :     "time" : "$TIME",
151 :     "diderotc-flags" : "$DIDEROTC_FLAGS",
152 :     "runtime-flags" : "$RUNTIME_FLAGS",
153 :     "results" : [
154 :     XXXX
155 :     #
156 :     # run teem version of benchmark
157 :     #
158 :     if [ $ENABLE_TEEM = yes ] ; then
159 :     echo " {" >> $REPORT
160 :     echo " \"name\" : \"teem\"," >> $REPORT
161 :     echo " \"nprocs\" : 1," >> $REPORT
162 :     echo " \"times\" : [" >> $REPORT
163 :     print -n "bmark-teem "
164 :     for ((i=1; $i <= $NRUNS; i++)) ; do
165 : jhr 1575 print -n "."
166 : jhr 3057 RESULT=$( ./bmark-teem | sed -e s/usr=// )
167 :     if (($i == $NRUNS)) ; then
168 :     echo " $RESULT" >> $REPORT
169 :     else
170 :     echo " $RESULT," >> $REPORT
171 :     fi
172 : jhr 1575 done
173 : jhr 3057 echo " ]" >> $REPORT
174 :     if [ $ENABLE_SEQ = yes -o $ENABLE_PAR = yes -o $ENABLE_CL -o $ENABLE_CUDA = yes ] ; then
175 :     echo " }," >> $REPORT
176 :     else
177 :     echo " }" >> $REPORT
178 :     fi
179 :     fi
180 :     #
181 :     # run sequential Diderot version of benchmark
182 :     #
183 :     if [ $ENABLE_SEQ = yes ] ; then
184 :     echo " {" >> $REPORT
185 :     echo " \"name\" : \"seq\"," >> $REPORT
186 :     echo " \"nprocs\" : 1," >> $REPORT
187 :     echo " \"times\" : [" >> $REPORT
188 :     print -n "\nbmark-seq "
189 :     for ((i=1; $i <= $NRUNS; i++)) ; do
190 : jhr 1656 print -n "."
191 : jhr 3057 RESULT=$( ./bmark-seq -t | sed -e s/usr=// )
192 :     if (($i == $NRUNS)) ; then
193 :     echo " $RESULT" >> $REPORT
194 :     else
195 :     echo " $RESULT," >> $REPORT
196 :     fi
197 : jhr 1656 done
198 : jhr 3057 echo " ]" >> $REPORT
199 :     if [ $ENABLE_PAR = yes -o $ENABLE_CL = yes -o $ENABLE_CUDA = yes ] ; then
200 :     echo " }," >> $REPORT
201 :     else
202 :     echo " }" >> $REPORT
203 :     fi
204 :     fi
205 :     #
206 :     # run parallel Diderot version of benchmark
207 :     #
208 :     if [ $ENABLE_PAR = yes ] ; then
209 :     for ((np=1; $np <= $MAXNP; np++)) ; do
210 :     print -n "\nbmark-par-$np "
211 :     echo " {" >> $REPORT
212 :     echo " \"name\" : \"par-$np\"," >> $REPORT
213 :     echo " \"nprocs\" : $np," >> $REPORT
214 :     echo " \"times\" : [" >> $REPORT
215 :     for ((i=1; $i <= $NRUNS; i++)) ; do
216 :     print -n "."
217 :     RESULT=$( ./bmark-par -t -n $np | sed -e s/usr=// )
218 :     if (($i == $NRUNS)) ; then
219 :     echo " $RESULT" >> $REPORT
220 :     else
221 :     echo " $RESULT," >> $REPORT
222 :     fi
223 :     done
224 :     echo " ]" >> $REPORT
225 :     if (($np < $MAXNP)) ; then
226 :     echo " }," >> $REPORT
227 :     elif [ $ENABLE_CL = yes -o $ENABLE_CUDA = yes ] ; then
228 :     echo "! }," >> $REPORT
229 :     else
230 :     echo " }" >> $REPORT
231 :     fi
232 :     done
233 :     fi
234 :     #
235 :     # run OpenCL Diderot version of benchmark
236 :     #
237 :     if [ $ENABLE_CL = yes ] ; then
238 :     for ((nw=1; $nw <= $MAXNW; nw++)) ; do
239 :     print -n "\nbmark-cl-$nw "
240 :     echo " {" >> $REPORT
241 :     echo " \"name\" : \"cl-$nw\"," >> $REPORT
242 : jhr 3165 echo " \"nprocs\" : $nw," >> $REPORT
243 : jhr 3057 echo " \"times\" : [" >> $REPORT
244 :     for ((i=1; $i <= $NRUNS; i++)) ; do
245 :     print -n "."
246 : jhr 3165 RESULT=$( ./bmark-cl -t -n $nw | sed -e s/usr=// )
247 : jhr 3057 if (($i == $NRUNS)) ; then
248 :     echo " $RESULT" >> $REPORT
249 :     else
250 :     echo " $RESULT," >> $REPORT
251 :     fi
252 :     done
253 :     echo " ]" >> $REPORT
254 : jhr 3165 if (($nw < $MAXNW)) ; then
255 : jhr 3057 echo " }," >> $REPORT
256 :     elif [ $ENABLE_CUDA = yes ] ; then
257 :     echo " }," >> $REPORT
258 :     else
259 :     echo " }" >> $REPORT
260 :     fi
261 :     done
262 :     fi
263 :     #
264 :     # run CUDA Diderot version of benchmark
265 :     #
266 :     if [ $ENABLE_CUDA = yes ] ; then
267 :     for ((nw=1; $nw <= $MAXNW; nw++)) ; do
268 :     print -n "\nbmark-cuda-$nw "
269 :     echo " {" >> $REPORT
270 :     echo " \"name\" : \"cl-$nw\"," >> $REPORT
271 : jhr 3162 echo " \"nprocs\" : $nw," >> $REPORT
272 : jhr 3057 echo " \"times\" : [" >> $REPORT
273 :     for ((i=1; $i <= $NRUNS; i++)) ; do
274 :     print -n "."
275 : jhr 3165 RESULT=$( ./bmark-cuda -t -n $nw | sed -e s/usr=// )
276 : jhr 3057 if (($i == $NRUNS)) ; then
277 :     echo " $RESULT" >> $REPORT
278 :     else
279 :     echo " $RESULT," >> $REPORT
280 :     fi
281 :     done
282 :     echo " ]" >> $REPORT
283 : jhr 3165 if (($nw < $MAXNW)) ; then
284 : jhr 3057 echo " }," >> $REPORT
285 :     else
286 :     echo " }" >> $REPORT
287 :     fi
288 :     done
289 :     fi
290 : jhr 1575 print ""
291 : jhr 3057 COMPLETED_AT=$( date +"%H-%M-%S" )
292 :     cat - >> $REPORT <<XXXX
293 :     ],
294 :     "completed-at" : "$COMPLETED_AT"
295 :     }
296 :     XXXX
297 : jhr 1575 else
298 :     echo "build failed" >> $REPORT
299 :     echo "build of $BMARK failed"
300 :     fi
301 : jhr 3071
302 :     echo "report in $REPORT"

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0