Разгон NVIDIA под UBUNTU

Разгон NVIDIA под UBUNTU

Сначала настраиваем стабильную работу из коробки, и только потом начинаем играться с разгоном.

1.Обновляем загрузчики

sudo update-grub

2.Запускаем команду сборки конфигурационного файла

sudo nvidia-xconfig -a --cool-bits=31 --allow-empty-initial-configuration --enable-all-gpus

3.Перезагрузка системы

sudo init 6

4.Переходим в каталог конфига

cd /etc/X11

5.Открываем файл конфига для редактирования

sudo nano xorg.conf

В блок Section "Screen" добавляем строку (после Option "Coolbits" "31")

Option "RegistryDwords" "PerfLevelSrc=0x2222"

Coхраняем файл и перезагружаем компьютер

5. Пишем скрипт для разгона (для выяснения точных работающих цифр разгона их можно вводить в в утилиту Нвидиа рукчками, а после выяснения поставить на автозагрузку) Если карт больше одной соответствено добавляем строки с gpu:1 gpu:2 и т.д. цифры разгона подставляем свои.

#!/bin/sh
nvidia-settings -a*[gpu:0]/GPUMemoryTransferRateOffset[3]=745;
nvidia-settings -a*[gpu:0]/GPUGraphicsClockOffset[3]=169;
nvidia-settings -a*[gpu:0]/GPUPowerMizerMode=1;
nvidia-settings -a*[gpu:0]/GPUFanControlState=1;
nvidia-settings -a*[fan:0]/GPUTargetFanSpeed=40;

Делаем скрипт исполняемым и прописываем его через приложение автозагрузки (прописывание в RCLOCAL не дает результата, так как грузится раньше драйвера)

6.Дальше у меня не заработало, может потому, что одна карта или ошибка в скрипте, но я укажу как есть. Cоздаем скрипт управления вентиляторами

#!/bin/sh
#export DISPLAY=:0
NUM_CARDS=2
NS="/usr/bin/nvidia-settings"
while true
do
for ((i=0; i<$NUM_CARDS;i++))
{
    GPU_TEMP=`nvidia-smi -i $i --query-gpu=temperature.gpu  --format=csv,noheader`
    FAN_SPEED=`nvidia-smi -i $i --query-gpu=fan.speed  --format=csv,noheader,nounits`
    if(($GPU_TEMP > 50)); then
        $NS -a [gpu:$i]/GPUFanControlState=1 -a [fan:$i]/GPUTargetFanSpeed=100 >/dev/null 2>&1
    fi
    if(($GPU_TEMP < 50)); then
       (($GPU_TEMP!=$FAN_SPEED)) && $NS -a [gpu:$i]/GPUFanControlState=1 -a [fan:$i]/GPUTargetFanSpeed=$GPU_TEMP >/dev/null 2>&1
    fi
}
sleep 5
done

Делаем исполняемым и в автозагрузку, перезагружаемся... все должно работать.