Ubuntu에서 다른 종류의 GPU를 사용하다 보니 전력설정 등이 문제가 되었습니다.
GPU종류를 인식해서 자동으로 오버(전력, 오버클럭, 팬 등) 적용하는 스크립트를 만들어 보았습니다.
아직 최종본은 아니지만 참고하셔서 응용하시기 바랍니다.^^
* 부팅시와 채굴 시작 스크립트(ex. claymore 등)에서 사용됨.
#!/bin/sh
# Name : ~/nv-config.sh
# Use : /etc/lightdm/lightdm.conf.d/nv.conf -> 부팅시 자동실행
# ~/claymore/claymore_local.sh -> 채굴 프로그램에서도 사용
# ~/ewbf/ewbf_local.sh
# Initialize GPUs -> 부팅시 마다 GPU 다시 인식시키게 됩니다.(하드 복제해서 사용할때 귀찮아서...)
nvidia-xconfig -a --cool-bits=28 --allow-empty-initial-configuration
# for nvidia-settings -> Shell에서 직접 실행시 오류 방지용입니다.
export DISPLAY=:0
export XAUTHORITY=/var/run/lightdm/root/:0
# Persistence mode
nvidia-smi -pm 1
# Power Limit(W) -> 기기별 적절한 값으로 변경하여 사용합니다.
# GTX1060(120W) : 60%(72), 65%(78), 75%(90), 78%(94)
# GTX1070(151W) : 70%(105)
#NV_POWER1050=
NV_POWER1060=72
NV_POWER1070=105
#NV_POWER1080=
# Core Clock : +0(0), +150(150), +200(200) -> 기기별 적절한 값으로 변경
NV_CORE=0
# Memory Clock : +0(0), +600(1200), +650(1300), +700(1400), +750(1500) - > 기기별 적절한 값으로 변경
NV_MEMORY=1300
# Fan Speed : 60%(60), 70%(70), 80%(80)- > 기기별 적절한 값으로 변경
NV_FAN=70
# Total GPUs : 12 EA -> 최대 개수지정이므로 특별히 변경 할 필요 없음
NV_GPUS="0 1 2 3 4 5 6 7 8 9 10 11"
# Performance level -> GPU 종류별 자동 설정
# GTX1060 / 1070 / 1080 : 3 (default)
# GTX1050 / P106 : 2
# P104 / P102(?) : 1
NV_IDX=3
for x in $NV_GPUS; do
NV_GPU_NAME=`nvidia-smi -i $x --query-gpu="gpu_name" --format="csv,noheader"`
# GeForce GTX 1050
if [ "$(echo $NV_GPU_NAME | grep -c '1050')" -ge 1 ]; then
echo "GPU[$x] = GTX1050"
NV_IDX=2
#nvidia-smi -i $x -pl $NV_POWER1050
# GeForce GTX 1060 or P106-100
if [ "$(echo $NV_GPU_NAME | grep -c '1060\|P106')" -ge 1 ]; then
if [ "$(echo $NV_GPU_NAME | grep -c 'P106')" -ge 1 ]; then
echo "GPU[$x] = P106"
NV_IDX=2
else
echo "GPU[$x] = GTX1060"
fi
nvidia-smi -i $x -pl $NV_POWER1060
fi
# GeForce GTX 1070 or P104-100
if [ "$(echo $NV_GPU_NAME | grep -c '1070\|P104')" -ge 1 ]; then
if [ "$(echo $NV_GPU_NAME | grep -c 'P104')" -ge 1 ]; then
echo "GPU[$x] = P104"
NV_IDX=1
else
echo "GPU[$x] = GTX1070"
fi
nvidia-smi -i $x -pl $NV_POWER1070
fi
# GeForce GTX 1080 or P102-100
if [ "$(echo $NV_GPU_NAME | grep -c '1080\|P102')" -ge 1 ]; then
if [ "$(echo $NV_GPU_NAME | grep -c 'P102')" -ge 1 ]; then
echo "GPU[$x] = P102"
NV_IDX=1
else
echo "GPU[$x] = GTX1080"
fi
#nvidia-smi -i $x -pl $NV_POWER1080
fi
nvidia-settings -a [gpu:$x]/GPUGraphicsClockOffset[$NV_IDX]=$NV_CORE
nvidia-settings -a [gpu:$x]/GPUMemoryTransferRateOffset[$NV_IDX]=$NV_MEMORY
nvidia-settings -a [gpu:$x]/GpuPowerMizerMode=1
nvidia-settings -a [gpu:$x]/GPUFanControlState=1
nvidia-settings -a [fan:$x]/GPUTargetFanSpeed=$NV_FAN
done
-------------------------------------
꼬리말
* 게시글 내용 삭제시 레벨 강등
* 질문은 각 주제별 게시판에.
비트코인 암호화화폐 커뮤니티 땡글~ 땡글~
-------------------------------------