SHOW:
|
|
- or go back to the newest paste.
| 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 | |
| 120 | mkdir $results/$prefix | |
| 121 | ||
| 122 | #kernels | |
| 123 | for k in $kernel | |
| 124 | do | |
| 125 | mkdir $results/$prefix/$k | |
| 126 | ||
| 127 | for w in $worksize | |
| 128 | do | |
| 129 | mkdir $results/$prefix/$k/w$w | |
| 130 | ||
| 131 | for v in $vectors | |
| 132 | do | |
| 133 | mkdir $results/$prefix/$k/w$w/v$v | |
| 134 | for m in $meclock | |
| 135 | do | |
| 136 | mkdir $results/$prefix/$k/w$w/v$v/m$m | |
| 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 | ||
| 145 | ||
| 146 | printf "ETA: %02d:%02d" $etamin $etasec | |
| 147 | echo "" | |
| 148 | ||
| 149 | if [ -f $results/$prefix/$k/w$w/v$v/m$m/e$e.json ] | |
| 150 | then | |
| 151 | echo "File exist" | |
| 152 | continue | |
| 153 | fi | |
| 154 | ||
| 155 | touch $results/$prefix/$k/w$w/v$v/m$m/e$e.json | |
| 156 | ||
| 157 | 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-allow=W:127.0.0.1 --api-port=$((4029+$d)) | |
| 158 | ||
| 159 | for sec in $(seq 0 5 $duration) | |
| 160 | do | |
| 161 | - | echo -ne " = Time left: $((180-$sec)) \r" |
| 161 | + | echo -ne " = Time left: $(($duration-$sec)) \r" |
| 162 | sleep 5 | |
| 163 | done | |
| 164 | ||
| 165 | echo '{"command":"summary","parameter":""}' | nc localhost -w1 $((4029+$d)) > $results/$prefix/$k/w$w/v$v/m$m/e$e.json
| |
| 166 | echo '{"command":"quit","parameter":""}' | nc localhost -w1 $((4029+$d)) >/dev/null
| |
| 167 | sleep 30 | |
| 168 | ||
| 169 | if screen -ls | grep minertester$d | |
| 170 | then | |
| 171 | rm $results/$prefix/$k/w$w/v$v/m$m/e$e.json | |
| 172 | touch reboot_required | |
| 173 | echo $'X server hang. reboot required\a' | |
| 174 | exit 1 | |
| 175 | fi | |
| 176 | done | |
| 177 | #done eng | |
| 178 | done | |
| 179 | #mem done | |
| 180 | done | |
| 181 | #done vectors | |
| 182 | done | |
| 183 | #done worksize | |
| 184 | done | |
| 185 | #done kernels | |
| 186 | echo "Done" | |
| 187 | exit 0 |