granularity.sh 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. #!/bin/bash
  2. # StarPU --- Runtime system for heterogeneous multicore architectures.
  3. #
  4. # Copyright (C) 2008-2011,2014 Université de Bordeaux
  5. # Copyright (C) 2010,2015,2017 CNRS
  6. #
  7. # StarPU is free software; you can redistribute it and/or modify
  8. # it under the terms of the GNU Lesser General Public License as published by
  9. # the Free Software Foundation; either version 2.1 of the License, or (at
  10. # your option) any later version.
  11. #
  12. # StarPU is distributed in the hope that it will be useful, but
  13. # WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  15. #
  16. # See the GNU Lesser General Public License in COPYING.LGPL for more details.
  17. #
  18. DIR=$PWD
  19. ROOTDIR=$DIR/../..
  20. SAMPLINGDIR=$DIR/sampling/
  21. TIMINGDIR=$DIR/timing/
  22. maxiter=5
  23. MINSIZE=$((30*1024))
  24. MAXSIZE=$((31*1024))
  25. trace_granularity()
  26. {
  27. grain=$1
  28. echo "GRAIN $grain"
  29. #minblocks=1
  30. minblocks=$(($MINSIZE/$grain))
  31. #maxblocks=2
  32. maxblocks=$(($MAXSIZE/$grain))
  33. if test $maxblocks -ge 128; then
  34. maxblocks=128
  35. fi
  36. #step=2
  37. # step=$((2048/$grain))
  38. step=$((4096/$grain))
  39. for blocks in `seq $minblocks $step $maxblocks`
  40. do
  41. size=$(($blocks*$grain))
  42. echo "size : $size (grain $grain nblocks $blocks)"
  43. calibrate_grain $grain $size
  44. OPTIONS="-pin -nblocks $blocks -size $size -v3"
  45. filename=$TIMINGDIR/granularity.$grain.$size
  46. #rm -f $filename
  47. for iter in `seq 1 $maxiter`
  48. do
  49. echo "$iter / $maxiter"
  50. val=`STARPU_NCPUS=8 STARPU_NCUDA=3 STARPU_SCHED="dmda" STARPU_PREFETCH=1 STARPU_CALIBRATE=1 $ROOTDIR/examples/heat/heat $OPTIONS 2> /dev/null`
  51. echo "$val"
  52. echo "$val" >> $filename
  53. done
  54. done
  55. }
  56. trace_granularity_hybrid()
  57. {
  58. grain=$1
  59. echo "GRAIN $grain"
  60. #minblocks=1
  61. minblocks=$(($MINSIZE/$grain))
  62. #maxblocks=2
  63. maxblocks=$(($MAXSIZE/$grain))
  64. if test $maxblocks -ge 64; then
  65. maxblocks=64
  66. fi
  67. #step=2
  68. step=$((2048/$grain))
  69. for blocks in `seq $minblocks $step $maxblocks`
  70. do
  71. size=$(($blocks*$grain))
  72. ntheta=$(( $(($size/32)) + 2))
  73. echo "size : $size (grain $grain nblocks $blocks)"
  74. OPTIONS="-pin -nblocks $blocks -ntheta $ntheta -nthick 34 -v4"
  75. filename=$TIMINGDIR/hybrid.$grain.$size
  76. #rm -f $filename
  77. for iter in `seq 1 $maxiter`
  78. do
  79. echo "$iter / $maxiter"
  80. val=`STARPU_SCHED="dmda" STARPU_PREFETCH=1 STARPU_CALIBRATE=1 $ROOTDIR/examples/heat/heat $OPTIONS 2> /dev/null`
  81. echo "$val"
  82. echo "$val" >> $filename
  83. done
  84. done
  85. }
  86. calibrate_grain()
  87. {
  88. grain=$1
  89. size=$2
  90. echo "Calibrating grain $grain size $size ($blocks blocks)"
  91. rm -f $SAMPLINGDIR/*
  92. OPTIONS="-pin -nblocks $blocks -size $size -v3"
  93. STARPU_NCUDA=3 STARPU_NCPUS=8 STARPU_CALIBRATE=1 STARPU_SCHED="dm" $ROOTDIR/examples/heat/heat $OPTIONS 2> /dev/null
  94. STARPU_NCUDA=3 STARPU_NCPUS=8 STARPU_CALIBRATE=1 STARPU_PREFETCH=1 STARPU_SCHED="dmda" $ROOTDIR/examples/heat/heat $OPTIONS 2> /dev/null
  95. STARPU_NCUDA=3 STARPU_NCPUS=8 STARPU_CALIBRATE=1 STARPU_PREFETCH=1 STARPU_SCHED="dmda" $ROOTDIR/examples/heat/heat $OPTIONS 2> /dev/null
  96. STARPU_NCUDA=3 STARPU_NCPUS=8 STARPU_CALIBRATE=1 STARPU_PREFETCH=1 STARPU_SCHED="dmda" $ROOTDIR/examples/heat/heat $OPTIONS 2> /dev/null
  97. STARPU_NCUDA=3 STARPU_NCPUS=8 STARPU_CALIBRATE=1 STARPU_PREFETCH=1 STARPU_SCHED="dmda" $ROOTDIR/examples/heat/heat $OPTIONS 2> /dev/null
  98. STARPU_NCUDA=3 STARPU_NCPUS=8 STARPU_CALIBRATE=1 STARPU_PREFETCH=1 STARPU_SCHED="dmda" $ROOTDIR/examples/heat/heat $OPTIONS 2> /dev/null
  99. }
  100. mkdir -p $TIMINGDIR
  101. mkdir -p $SAMPLINGDIR
  102. #rm -f $SAMPLINGDIR/*
  103. #grainlist="64 128 256 512 768 1024 1536 2048"
  104. #grainlist="1024 2048 1024 512 256"
  105. grainlist="256 32 64 128 256 512 1024 2048 4096"
  106. export STARPU_PERF_MODEL_DIR=$SAMPLINGDIR
  107. cd $ROOTDIR
  108. cd $DIR
  109. # calibrate (sampling)
  110. # for grain in $grainlist
  111. # do
  112. # calibrate_grain $grain;
  113. # # calibrate_grain $(( $grain / 2));
  114. # done
  115. # perform the actual benchmarking now
  116. for grain in $grainlist
  117. do
  118. # trace_granularity_hybrid $grain;
  119. trace_granularity $grain;
  120. # trace_granularity_nomodel $grain;
  121. done