granularity_gnuplot.sh 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #!/bin/bash
  2. prefix=granularity
  3. prefix=hybrid
  4. outputfile=$prefix.data
  5. find timing/* -name "$prefix.*" > filelist
  6. grainlist=`sed -e "s/.*$prefix\.\(.*\)\.\(.*\)$/\1/" filelist |sort -n|uniq|xargs`
  7. sizelist=`sed -e "s/.*$prefix\.\(.*\)\.\(.*\)$/\2/" filelist |sort -n|uniq`
  8. # Make some header
  9. line="#SIZE "
  10. for grain in $grainlist
  11. do
  12. line="$line $grain"
  13. done
  14. echo "$line" > $outputfile
  15. for size in $sizelist
  16. do
  17. line="$size "
  18. for grain in $grainlist
  19. do
  20. # Compute Average value ...
  21. if test -f timing/$prefix.$grain.$size; then
  22. # file does exists
  23. filename=timing/$prefix.$grain.$size
  24. # echo "GRAIN $grain SIZE $size exists !"
  25. # how many samples do we have ?
  26. nsample=`cat $filename | wc -w`
  27. if test $nsample -ge 1; then
  28. sum=0
  29. for i in `cat $filename | xargs`
  30. do
  31. sum=$(echo "$sum + $i"|bc -l)
  32. done
  33. # average execution time is ...
  34. mean=$(echo "$sum / $nsample"|bc -l)
  35. # in Flop/s this is 2*size^3/3
  36. gflops=$(echo "2.0 * $size * $size * $size / (3000000 * $mean)"|bc -l)
  37. # just make this a bit prettier ..
  38. gflops=`echo $gflops | sed -e "s/\(.*\.[0-9][0-9]\).*$/\1/"`
  39. line="$line $gflops"
  40. else
  41. # we have no valid sample even if the file exists
  42. line="$line x"
  43. fi
  44. else
  45. # file does not exist
  46. line="$line x"
  47. fi
  48. line="$line "
  49. done
  50. echo "$line" >> $outputfile
  51. done
  52. gnuplotline="plot "
  53. cnt=2
  54. for grain in $grainlist
  55. do
  56. if test $cnt -ne 2; then
  57. # i hate gnuplot :)
  58. gnuplotline="$gnuplotline , "
  59. fi
  60. gnuplotline="$gnuplotline \"$outputfile\" usi 1:$cnt with linespoint title \"\($grain x $grain\)\" lt rgb \"black\" "
  61. cnt=$(($cnt+1))
  62. done
  63. gnuplot > /dev/null << EOF
  64. set term postscript eps enhanced color
  65. set output "$prefix.eps"
  66. set pointsize 0.75
  67. #set title "Impact of granularity"
  68. set grid y
  69. set grid x
  70. #set logscale x
  71. set key box right bottom title "tile size"
  72. set size 0.65
  73. set xlabel "Matrix size"
  74. set ylabel "GFlop/s"
  75. $gnuplotline
  76. EOF