#!/bin/bash ####### #config ####### cgminer_config_path="/home/bigmsi/.cgminer/" #filename for config files should be "test0.conf", #"test1.conf", "testX.conf" where X is device number #intencity will not change during tests Intencity=9 #each iteration test time in seconds duration=180 #directory where to save result files results="test" #result files prefix prefix="test" #ranges to test in kernel="diakgcn phatk diablo poclbm" worksize="64 128 256" vectors="1 2 4" engine_clock_from=930 engine_clock_to=930 engine_clock_step=5 memclock_from=150 memclock_to=300 memclock_step=5 ####### #end config ####### d=0 if [ $# -ge 1 ] then d=$1 fi cards=`./cgminer -n | grep "devices:" | sed 's/.*devices: //'` if [ $d -ge $cards ] then echo "Device number out of available range! Dev found: $cards" exit 1 fi makeParams() { if [[ $d -eq 0 ]] then str="$1" else str="0" fi if [[ $cards -gt 1 ]] then for i in $(seq 1 1 $(($cards - 1))) do if [[ $i -eq $d ]] then str="$str,$1" else str="$str,0" fi done fi echo "$str" } engine=$(seq $engine_clock_from $engine_clock_step $engine_clock_to) meclock=$(seq $memclock_from $memclock_step $memclock_to) sec_left=0 tmp=`echo $kernel | wc -w` let "sec_left += tmp" tmp=`echo $worksize | wc -w` let "sec_left *= tmp" tmp=`echo $vectors | wc -w` let "sec_left *= tmp" let "tmp = engine_clock_to - engine_clock_from" let "tmp /= engine_clock_step" if [ $tmp -eq 0 ] then tmp=1 fi let "sec_left *= tmp" let "tmp = memclock_to-memclock_from" let "tmp /= memclock_step" if [ $tmp -eq 0 ] then tmp=1 fi let "sec_left *= tmp" let "tmp = duration + 35" let "sec_left *= tmp" mkdir $results mkdir $results/$prefix #kernels for k in $kernel do mkdir $results/$prefix/$k for w in $worksize do mkdir $results/$prefix/$k/w$w for v in $vectors do mkdir $results/$prefix/$k/w$w/v$v for m in $meclock do mkdir $results/$prefix/$k/w$w/v$v/m$m for e in $engine do let sec_left=sec_left-duration-35 echo "-v$v -w$w -k$k --gpu-memclock=$m --gpu-engine=$e" etamin=$(( $sec_left / 60 )) etasec=$(( $sec_left % 60 )) printf "ETA: %02d:%02d" $etamin $etasec echo "" if [ -f $results/$prefix/$k/w$w/v$v/m$m/e$e.json ] then echo "File exist" continue fi touch $results/$prefix/$k/w$w/v$v/m$m/e$e.json 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)) for sec in $(seq 0 5 $duration) do echo -ne " = Time left: $((180-$sec)) \r" sleep 5 done echo '{"command":"summary","parameter":""}' | nc localhost -w1 $((4029+$d)) > $results/$prefix/$k/w$w/v$v/m$m/e$e.json echo '{"command":"quit","parameter":""}' | nc localhost -w1 $((4029+$d)) >/dev/null sleep 30 if screen -ls | grep minertester$d then rm $results/$prefix/$k/w$w/v$v/m$m/e$e.json touch reboot_required echo $'X server hang. reboot required\a' exit 1 fi done #done eng done #mem done done #done vectors done #done worksize done #done kernels echo "Done" exit 0