Advertisement
Guest User

Untitled

a guest
Mar 13th, 2012
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.75 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #######
  4. #config
  5. #######
  6.  
  7.  
  8. cgminer_config_path="/home/bigmsi/.cgminer/"
  9. #filename for config files should be "test0.conf",
  10. #"test1.conf", "testX.conf" where X is device number
  11.  
  12. #intencity will not change during tests
  13. Intencity=9
  14.  
  15. #each iteration test time in seconds
  16. duration=180
  17.  
  18. #directory where to save result files
  19. results="test"
  20. #result files prefix
  21. prefix="test"
  22.  
  23.  
  24.  
  25. #ranges to test in
  26. kernel="diakgcn phatk diablo poclbm"
  27. worksize="64 128 256"
  28. vectors="1 2 4"
  29.  
  30. engine_clock_from=930
  31. engine_clock_to=930
  32. engine_clock_step=5
  33.  
  34. memclock_from=150
  35. memclock_to=300
  36. memclock_step=5
  37.  
  38.  
  39. #######
  40. #end config
  41. #######
  42.  
  43.  
  44. d=0
  45. if [ $# -ge 1 ]
  46. then
  47.   d=$1
  48. fi
  49.  
  50. cards=`./cgminer -n | grep "devices:" | sed 's/.*devices: //'`
  51.  
  52. if [ $d -ge $cards ]
  53. then
  54.   echo "Device number out of available range! Dev found: $cards"
  55.   exit 1
  56. fi
  57.  
  58.  
  59. makeParams()
  60. {
  61.   if [[ $d -eq 0 ]]
  62.   then
  63.     str="$1"
  64.   else
  65.     str="0"
  66.   fi
  67.  
  68.   if [[ $cards -gt 1 ]]
  69.   then
  70.     for i in $(seq 1 1 $(($cards - 1)))
  71.     do
  72.       if [[ $i -eq $d ]]
  73.       then
  74.         str="$str,$1"
  75.       else
  76.         str="$str,0"
  77.       fi
  78.     done
  79.   fi
  80.  
  81.   echo "$str"
  82. }
  83.  
  84.  
  85. engine=$(seq $engine_clock_from $engine_clock_step $engine_clock_to)
  86. meclock=$(seq $memclock_from $memclock_step $memclock_to)
  87.  
  88. sec_left=0
  89. tmp=`echo $kernel | wc -w`
  90. let "sec_left += tmp"
  91.  
  92. tmp=`echo $worksize | wc -w`
  93. let "sec_left *= tmp"
  94.  
  95. tmp=`echo $vectors | wc -w`
  96. let "sec_left *= tmp"
  97.  
  98. let "tmp = engine_clock_to - engine_clock_from"
  99. let "tmp /= engine_clock_step"
  100. if [ $tmp -eq 0 ]
  101. then
  102.   tmp=1
  103. fi
  104. let "sec_left *= tmp"
  105.  
  106.  
  107.  
  108. let "tmp = memclock_to-memclock_from"
  109. let "tmp /= memclock_step"
  110. if [ $tmp -eq 0 ]
  111. then
  112.   tmp=1
  113. fi
  114. let "sec_left *= tmp"
  115.  
  116. let "tmp = duration + 35"
  117. let "sec_left *= tmp"
  118.  
  119. mkdir $results 2>/dev/null
  120. mkdir $results/$prefix 2>/dev/null
  121.  
  122. #kernels
  123. for k in $kernel
  124. do
  125.   mkdir $results/$prefix/$k 2>/dev/null
  126.  
  127.   for w in $worksize
  128.   do
  129.     mkdir $results/$prefix/$k/w$w 2>/dev/null
  130.  
  131.     for v in $vectors
  132.     do
  133.       mkdir $results/$prefix/$k/w$w/v$v 2>/dev/null
  134.       for m in $meclock
  135.       do
  136.         mkdir $results/$prefix/$k/w$w/v$v/m$m 2>/dev/null
  137.         for e in $engine
  138.         do
  139.  
  140.           let "sec_left = sec_left - duration - 35"
  141.           echo "-v$v -w$w -k$k --gpu-memclock=$m --gpu-engine=$e"
  142.           etamin=$(( $sec_left / 60 ))
  143.           etasec=$(( $sec_left % 60 ))
  144.           printf "ETA:   %02d:%02d" $etamin $etasec
  145.           echo ""
  146.  
  147.           if [ -f $results/$prefix/$k/w$w/v$v/m$m/e$e.json ]
  148.           then
  149.             echo "File exist"
  150.             continue
  151.           fi
  152.  
  153.           touch $results/$prefix/$k/w$w/v$v/m$m/e$e.json
  154.  
  155.           screen -dmS minertester$d ./cgminer -d$d --remove-disabled -c $cgminer_config_path/test$d.conf -v$v -w$w -k$k --gpu-memclock=$(makeParams $m) --gpu-engine=$(makeParams $e) -I$(makeParams $Intencity) --api-listen --api-allow=W:127.0.0.1 --api-port=$((4029+$d))
  156.  
  157.           for sec in $(seq 0 5 $duration)
  158.           do
  159.             echo -ne " = Time left: $((180-$sec))           \r"
  160.             sleep 5
  161.           done
  162.  
  163.           echo '{"command":"summary","parameter":""}' | nc localhost -w1 $((4029+$d)) > $results/$prefix/$k/w$w/v$v/m$m/e$e.json
  164.           echo '{"command":"quit","parameter":""}' | nc localhost -w1 $((4029+$d)) >/dev/null
  165.           sleep 30
  166.  
  167.           if screen -ls | grep minertester$d
  168.           then
  169.             rm $results/$prefix/$k/w$w/v$v/m$m/e$e.json
  170.             touch reboot_required
  171.             echo $'X server hang. reboot required\a'
  172.             exit 1
  173.           fi
  174.         done
  175.         #done eng
  176.       done
  177.       #mem done
  178.     done
  179.     #done vectors
  180.   done
  181.   #done worksize
  182. done
  183. #done kernels
  184. echo "Done"
  185. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement