diff options
author | Jim Plank <plank@cs.utk.edu> | 2013-12-29 16:51:37 -0500 |
---|---|---|
committer | Jim Plank <plank@cs.utk.edu> | 2013-12-29 16:51:37 -0500 |
commit | 88bb18c651e48c527de540564471dff34fdc0d9c (patch) | |
tree | 28d405b659cb07308d3ab362ab997ccd5a6b4c44 /tools/time_tool.sh | |
parent | 8eec6d46764dde8f11090d6bb0ff9111d535c793 (diff) | |
download | gf-complete-88bb18c651e48c527de540564471dff34fdc0d9c.tar.gz |
Added time_tool.sh to tools for quick timing.
Modified gf_methods to be a little more flexible.
Diffstat (limited to 'tools/time_tool.sh')
-rw-r--r-- | tools/time_tool.sh | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/tools/time_tool.sh b/tools/time_tool.sh new file mode 100644 index 0000000..d2aa591 --- /dev/null +++ b/tools/time_tool.sh @@ -0,0 +1,95 @@ +# time_tool.sh - Shell script to test various timings. +# This is a rough tester -- its job is to work quickly rather than precisely. +# (Jim Plank) + +#!/bin/sh + +if [ $# -lt 3 ]; then + echo 'usage sh time_tool.sh M|D|R|B w method' >&2 + exit 1 +fi + +op=$1 +w=$2 + +shift ; shift + +method="$*" + +if [ $op != M -a $op != D -a $op != R -a $op != B ]; then + echo 'usage sh time_tool.sh M|D|R|B w method' >&2 + echo 'You have to specify a test: ' >&2 + echo ' M=Multiplication' >&2 + echo ' D=Division' >&2 + echo ' R=Regions' >&2 + echo ' B=Best-Region' >&2 + exit 1 +fi + +# First, use a 16K buffer to test the performance of single multiplies. + +fac=`echo $w | awk '{ n = $1; while (n != 0 && n%2==0) n /= 2; print n }'` +if [ $fac -eq 0 ]; then + echo 'usage sh time_tool.sh M|D|R|B w method' >&2 + echo 'Bad w' >&2 + exit 1 +fi + +bsize=16384 +bsize=`echo $bsize $fac | awk '{ print $1 * $2 }'` + +if [ `./gf_time $w M -1 $bsize 1 $method 2>&1 | wc | awk '{ print $1 }'` -gt 2 ]; then + echo 'usage sh time_tool.sh w method' >&2 + echo "Bad method" + exit 1 +fi + +if [ $op = M -o $op = D ]; then + iter=1 + c1=`./gf_time $w $op -1 $bsize $iter $method` + t=`echo $c1 | awk '{ printf "%d\n", $4*1000 }'` + s=`echo $c1 | awk '{ print $8 }'` + bs=$s + + while [ $t -lt 1 ]; do + bs=$s + iter=`echo $iter | awk '{ print $1*2 }'` + c1=`./gf_time $w $op -1 $bsize $iter $method` + t=`echo $c1 | awk '{ printf "%d\n", $4*1000 }'` + s=`echo $c1 | awk '{ print $8 }'` + done + + echo "$op speed (MB/s): " $bs " W-Method:" $w $method + exit 0 +fi + +bsize=16384 +bsize=`echo $bsize $fac | awk '{ print $1 * $2 }'` + +best=0 +while [ $bsize -le 4194304 ]; do + iter=1 + c1=`./gf_time $w G -1 $bsize $iter $method` + t=`echo $c1 | awk '{ printf "%d\n", $6*1000 }'` + s=`echo $c1 | awk '{ print $10 }'` + bs=$s + + while [ $t -lt 1 ]; do + bs=$s + iter=`echo $iter | awk '{ print $1*2 }'` + c1=`./gf_time $w G -1 $bsize $iter $method` + t=`echo $c1 | awk '{ printf "%d\n", $6*1000 }'` + s=`echo $c1 | awk '{ print $10 }'` + done + if [ $bsize -lt 1048576 ]; then + str=`echo $bsize | awk '{ printf "%3dK\n", $1/1024 }'` + else + str=`echo $bsize | awk '{ printf "%3dM\n", $1/1024/1024 }'` + fi + if [ $op = R ]; then + echo "Region Buffer-Size: $str (MB/s): " $bs " W-Method:" $w $method + fi + best=`echo $best $bs | awk '{ print ($1 > $2) ? $1 : $2 }'` + bsize=`echo $bsize | awk '{ print $1 * 2 }'` +done +echo "Region Best (MB/s): "$best " W-Method:" $w $method |