blob: 1b4bbd16b5035a9703b3241a77b36c7a634742e9 [file] [log] [blame]
bart8785c122008-05-29 08:34:27 +00001#!/bin/bash
2
3########################
4# Function definitions #
5########################
6
bart32811502008-06-03 15:12:59 +00007function log2 {
8 local i
9
10 for ((i=0;i<64;i++))
11 do
12 if [ $((2**i)) = $1 ]; then
13 echo $i
14 return 0
15 fi
16 done
17 echo ""
18 return 1
19}
20
21function get_cache_size {
22 local s
23 s=$(</sys/devices/system/cpu/cpu0/cache/index2/size)
24 if [ "${s%M}" != "$s" ]; then
25 echo $((${s%M}*1024*1024))
26 elif [ "${s%K}" != "$s" ]; then
27 echo $((${s%K}*1024))
28 else
29 echo $s
30 fi
31}
32
bart8785c122008-05-29 08:34:27 +000033# Read a stream of numbers from stdin (one per line), and print the average
34# and standard deviation.
35function avgstddev {
bartf06b4272008-05-30 09:52:13 +000036 awk '{n++;sum+=$1;sumsq+=$1*$1}END{d=sumsq/n-sum*sum/n/n;print sum/n,(d>0?sqrt(d):0)}'
bart8785c122008-05-29 08:34:27 +000037}
38
39function run_test {
40 local tmp avg1=1 stddev1=1 avg2=1 stddev2=1
41
42 tmp="/tmp/test-timing.$$"
bart334db5e2008-06-05 10:14:53 +000043 rm -f "${tmp}"
44
bart8785c122008-05-29 08:34:27 +000045 echo "$@"
46 for ((i=0;i<3;i++))
47 do
bart868d73a2008-06-04 13:02:22 +000048 cat "${test_input:-/dev/null}" | \
49 /usr/bin/time --format="%e" "$@" 2>&1 | \
50 tail -n 1
bart8785c122008-05-29 08:34:27 +000051 done | avgstddev > "$tmp"
52 read avg1 stddev1 < "$tmp"
53 echo "Average time: ${avg1} +/- ${stddev1} seconds"
54
bart868d73a2008-06-04 13:02:22 +000055 for p in 1 2 4
bart8785c122008-05-29 08:34:27 +000056 do
bartc4a174f2008-06-03 11:41:19 +000057 echo "$VG --tool=exp-drd $@ -p$p"
58 for ((i=0;i<3;i++))
59 do
bart868d73a2008-06-04 13:02:22 +000060 cat "${test_input:-/dev/null}" | \
61 /usr/bin/time --format="%e" $VG --tool=exp-drd "$@" -p$p 2>&1 | \
62 tail -n 1
bartc4a174f2008-06-03 11:41:19 +000063 done | avgstddev > "$tmp"
64 read avg2 stddev2 < "$tmp"
65 echo "Average time: ${avg2} +/- ${stddev2} seconds"
66 awk "END{print "'"'"Ratio ="'"'", ${avg2}/${avg1}, "'"'"+/-"'"'", ${avg2}/${avg1}*(${stddev1}/${avg1}+${stddev2}/${avg2})}" </dev/null
67 done
bart8785c122008-05-29 08:34:27 +000068
69 echo ''
70
71 rm -f "$tmp"
72}
73
74
75# Script body
76
bart32811502008-06-03 15:12:59 +000077DRD_SCRIPTS_DIR="$(dirname $0)"
bart7acf3802008-06-06 10:17:26 +000078if [ "${DRD_SCRIPTS_DIR:0:1}" != "/" ]; then
79 DRD_SCRIPTS_DIR="$PWD/$DRD_SCRIPTS_DIR"
bart32811502008-06-03 15:12:59 +000080fi
81
82SPLASH2="${DRD_SCRIPTS_DIR}/../splash2"
bartc4a174f2008-06-03 11:41:19 +000083if [ ! -e "${SPLASH2}" ]; then
84 echo "Error: splash2 directory not found (${SPLASH2})."
bart8785c122008-05-29 08:34:27 +000085 exit 1
86fi
87
88if [ "$VG" = "" ]; then
bart32811502008-06-03 15:12:59 +000089 VG="${DRD_SCRIPTS_DIR}/../../vg-in-place"
bart8785c122008-05-29 08:34:27 +000090fi
91
92if [ ! -e "$VG" ]; then
93 echo "Could not find $VG."
94 exit 1
95fi
96
bart32811502008-06-03 15:12:59 +000097# Results: (-p1) (-p2) (-p3) (-p4) ITC (-p4) ITC (-p4)
98# original w/ filter
99# .........................................................................
bart08865622008-06-06 14:31:36 +0000100# Cholesky 40 47 ? 82 239 82
101# FFT 16 17 N/A 47 90 41
102# LU, contiguous blocks 39 41 ? 45 428 128
103# LU, non-contiguous blocks 39 41 ? 49 428 128
104# Ocean, contiguous partitions 17 19 N/A 25 90 28
105# Ocean, non-continguous partns 18 21 N/A 30 90 28
106# Radiosity 78 78 ? 78 485 163
107# Radix 10 12 ? 15 222 56
108# Raytrace 56 56 ? 56 172 53
109# Water-n2 34 34 ? 34 189 39
110# Water-sp 33 33 ? 33 183 34
bart0ce652f2008-06-05 13:47:15 +0000111#
112# Hardware: dual-core Intel Xeon 5130, 1.995 MHz, 4 MB L2 cache, 4 GB RAM.
bart7acf3802008-06-06 10:17:26 +0000113# Software: Ubuntu 7.10 server, 64-bit (includes gcc 4.1.3).
bart8785c122008-05-29 08:34:27 +0000114
bart32811502008-06-03 15:12:59 +0000115cache_size=$(get_cache_size)
116log2_cache_size=$(log2 ${cache_size})
117
118# Cholesky
bart32811502008-06-03 15:12:59 +0000119(
bart868d73a2008-06-04 13:02:22 +0000120 cd ${SPLASH2}/codes/kernels/cholesky/inputs
121 for f in *Z
122 do
123 gzip -cd <$f >${f%.Z}
124 done
125 run_test ../CHOLESKY -C${cache_size} -n1024 tk29.O
bart32811502008-06-03 15:12:59 +0000126)
bart32811502008-06-03 15:12:59 +0000127
128# FFT
bart868d73a2008-06-04 13:02:22 +0000129run_test ${SPLASH2}/codes/kernels/fft/FFT -t -l${log2_cache_size} -m20
bart32811502008-06-03 15:12:59 +0000130
131# LU, contiguous blocks.
bartc4a174f2008-06-03 11:41:19 +0000132run_test ${SPLASH2}/codes/kernels/lu/contiguous_blocks/LU -n1024
bart8785c122008-05-29 08:34:27 +0000133
bart32811502008-06-03 15:12:59 +0000134# LU, non-contiguous blocks.
bartc4a174f2008-06-03 11:41:19 +0000135run_test ${SPLASH2}/codes/kernels/lu/non_contiguous_blocks/LU -n1024
bart8785c122008-05-29 08:34:27 +0000136
bart868d73a2008-06-04 13:02:22 +0000137# Ocean
138run_test ${SPLASH2}/codes/apps/ocean/contiguous_partitions/OCEAN -n2050
139run_test ${SPLASH2}/codes/apps/ocean/non_contiguous_partitions/OCEAN -n258
140
bart32811502008-06-03 15:12:59 +0000141# Radiosity.
bartc4a174f2008-06-03 11:41:19 +0000142run_test ${SPLASH2}/codes/apps/radiosity/RADIOSITY -batch -room
143
bart868d73a2008-06-04 13:02:22 +0000144# Radix
145run_test ${SPLASH2}/codes/kernels/radix/RADIX -n$((2**24))
146
147# Raytrace
148(
149 cd ${SPLASH2}/codes/apps/raytrace/inputs
150 rm -f *.env *.geo *.rl
151 for f in *Z
152 do
153 gzip -cd <$f >${f%.Z}
154 done
155 run_test ../RAYTRACE balls4.env
156)
bart334db5e2008-06-05 10:14:53 +0000157
bart868d73a2008-06-04 13:02:22 +0000158# Water-n2
bart334db5e2008-06-05 10:14:53 +0000159(
160 cd ${SPLASH2}/codes/apps/water-nsquared
161 test_input=input run_test ./WATER-NSQUARED
162)
bart868d73a2008-06-04 13:02:22 +0000163
164# Water-sp
bart334db5e2008-06-05 10:14:53 +0000165(
166 cd ${SPLASH2}/codes/apps/water-spatial
167 test_input=input run_test ./WATER-SPATIAL
168)
bart868d73a2008-06-04 13:02:22 +0000169
170
bartc4a174f2008-06-03 11:41:19 +0000171
172# Local variables:
173# compile-command: "./run-splash2"
174# End: