]> git.somenet.org - pub/jan/parprog.git/blob - prefix/runAll.sh
update _abgabe/merge.odt
[pub/jan/parprog.git] / prefix / runAll.sh
1 #!/bin/bash
2
3 #TODO: alle scheduler auswerten
4 #TODO: werte der runs behalten (kein rm-rf stats) und bei jedem weiteren run soll parseDat.py alle vorhandenen runs auswerten und das minimum nehmen.
5 #TODO: im notfall in bash auswerten, sollte python nicht einfach glob'ben können.
6 #TODO: remove binname in output -> nonunique info - use raw filename instead.
7 #TODO: noch ein neuer algo: mit pragma reduce anstelle von pragma for -> angabe
8 #TODO: performance counters -> angabe
9
10
11 if [ ! -f numlist.bin ]; then
12         echo "generating numfile.bin"
13         dd if=/dev/urandom of=numlist.bin bs=1000 count=100000
14 fi
15
16 if [ ! -e build ]; then
17         echo "compiling"
18         make
19 fi
20
21 STARTTS="`date --iso-8601=minutes`"
22 SCHEDULING="static dynamic guided runtime"
23 ALGORITHMS="seq datapar recurse hillis_sum hillis_partial reduce"
24 #RUNLIST="$(seq 0 250000 1000000) $(seq 0 2500000 10000000) $(seq 0 25000000 100000000)"
25 RUNLIST="1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8388608 16777216 33554432 67108864 134217728"
26
27 echo "STARTING: stats/raw/${STARTTS}"
28 mkdir -p "stats/raw/${STARTTS}"
29
30 for sched in $SCHEDULING; do
31         echo "***** sched: ${sched} *****"
32         OMP_SCHEDULE=sched
33         ulimit -s unlimited
34         for algo in $ALGORITHMS; do
35                 echo "*** algo: ${algo} ***"
36                 for i in $RUNLIST; do
37                         if [ "$i" -eq "0" ] ; then
38                                 echo "* ignoring 0 run *"
39                         else 
40                                 build/$algo -n $i > "stats/raw/tmp" 2> /dev/null
41                                 cat "stats/raw/tmp"
42                                 mv stats/raw/tmp "stats/raw/${STARTTS}/${sched}_${algo}_n${i}"
43                         fi
44                 done
45         done
46 done
47
48 cd stats
49 ./parseDat.py
50
51 echo "done"
52