Skip to content

Instantly share code, notes, and snippets.

@dobrMAN
Created May 29, 2018 08:54
Show Gist options
  • Save dobrMAN/059c6941bdf80a91022493065dbadc97 to your computer and use it in GitHub Desktop.
Save dobrMAN/059c6941bdf80a91022493065dbadc97 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
#[ -t 1 ] &&
. colors
date
echo ""
NVIDIA_OC_CONF="/hive-config/nvidia-oc.conf"
export DISPLAY=":0"
n=`gpu-detect NVIDIA`
if [ $n == 0 ]; then
echo "No NVIDIA cards detected, exiting"
exit
fi
echo "Detected $n NVIDIA cards"
if [ ! -f $NVIDIA_OC_CONF ]; then
echo "$NVIDIA_OC_CONF does not exist"
exit
fi
source $NVIDIA_OC_CONF
if [[ -z $FAN || $FAN == "" ]]; then
FAN=0
fi
[[ ! -z $FAN ]] &&
FAN=($FAN) &&
for (( i=${#FAN[@]}; i < $n; ++i )); do
FAN[$i]=${FAN[$i-1]}
done
echo ""
nvidia-persistenced --persistence-mode
nvidia-smi -pm 1
echo ""
#for i in {0..$n}
for (( i=0; i < $n; ++i )); do
#name=`nvidia-smi --query-gpu=gpu_name,gpu_bus_id --format=csv,noheader -i $i`
nvidiainfo=`nvidia-smi --query-gpu=gpu_bus_id,gpu_name,power.default_limit,power.limit,power.draw --format=csv,noheader -i $i`
bus=`awk -F', ' '{print $1}' <<< $nvidiainfo`
name=`awk -F', ' '{print $2}' <<< $nvidiainfo`
plim_def=`awk -F', ' '{print $3}' <<< $nvidiainfo`
plim=`awk -F', ' '{print $4}' <<< $nvidiainfo`
power_draw=`awk -F', ' '{print $5}' <<< $nvidiainfo`
bus=`awk '{print substr($1,10); }' <<< $bus` #00000000:01:00.0
echo -e "${YELLOW}===${NOCOLOR} GPU ${CYAN}$i${NOCOLOR}, $bus ${GREEN}$name${NOCOLOR}, $power_draw / $plim (Default $plim_def) ${YELLOW}=== `date +"%T"`${NOCOLOR}"
#persistense mode, save settings on process restart
#nvidia-smi -i $i -pm 1
#continue
#not working
#nvidia-smi -i ${i} -ac 4004,1911
args=
#nvidia-settings -a [gpu:$i]/GPUPowerMizerMode=1 | grep -v "^$"
args+=" -a [gpu:$i]/GPUPowerMizerMode=1"
if [[ -z $FAN || ${FAN[$i]} == 0 ]]; then
#nvidia-settings -a [gpu:$i]/GPUFanControlState=0 | grep -v "^$"
args+=" -a [gpu:$i]/GPUFanControlState=0"
else
#nvidia-settings -a [gpu:$i]/GPUFanControlState=1 | grep -v "^$"
#nvidia-settings -a [fan:$i]/GPUTargetFanSpeed=${FAN[$i]} | grep -v "^$"
args+=" -a [gpu:$i]/GPUFanControlState=1"
args+=" -a [fan:$i]/GPUTargetFanSpeed=${FAN[$i]}"
fi
#echo "i=$i x=$x"
#GTX 1050 wanted i=2, allothers want i=3
x=3
if [[ $name =~ "1050" ]]; then x=2
elif [[ $name =~ "P106-100" ]]; then x=2
elif [[ $name =~ "P106-090" ]]; then x=1
elif [[ $name =~ "P104-100" ]]; then x=1
elif [[ $name =~ "P102-100" ]]; then x=1
fi
[[ ! -z $LOGO_BRIGHTNESS ]] &&
#nvidia-settings -a [gpu:$i]/GPULogoBrightness=$LOGO_BRIGHTNESS | grep -v "^$"
args+=" -a [gpu:$i]/GPULogoBrightness=$LOGO_BRIGHTNESS"
if [[ ! -z $args ]]; then
nvresult=`nvidia-settings $args`
[[ $? -ne 0 ]] && color=$RED || color=$NOCOLOR
nvresult=`echo "$nvresult" | grep -v "^$"`
echo -e "${color}$nvresult${NOCOLOR}"
fi
done
echo "OC settings will be applyed after 1 minute."
sleep 1m
/hive/sbin/nvidia-oc-log
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment