nkmrtty’s blog

https://nkmrtty.com/

GPGPU環境作り改

先日、表題の通りの記事を書いたわけですが、この手順だとnvidia-settingsコマンドを使ったGPUオーバークロックができなくてずっと困っていた(半年ぐらい)。

nkmrtty.hatenablog.com

DeepなML使ったDataのマイニングにも十分興味はあるのですが、Goldのマイニングにも興味があってそれまでは専用設定がすでにされたUbuntuイメージを使っていたわけです。

今回、やっと自分で構築した環境でGPUオーバークロックができるようになったので改めてUbuntuクリーンインストールされた状態からの手順についてまとめます。

GPUオーバークロックについては自己責任でお願いします。

想定環境

基本的にローカルでの作業になります。

前準備

NvidiaドライバとCUDAをそれぞれDLしておく。

Nouveauドライバの無効化

/etc/modprobe.d/blacklist.confに以下を追記。ほぼ前回と同じ。

blacklist nouveau
options nouveau modeset=0

反映させて再起動する。

$ sudo update-initramfs -u
$ sudo reboot

Nvidiaドライバのインストール

Alt+Ctrl+F1Virtual Consoleを起動する。

X-serverを止めます。

$ sudo service lightdm stop

ドライバをインストールします。

$ sudo /path/to/NVIDIA-Linux-x86_64-384.90.run

再起動後、nvidia-smiコマンドが動作すればドライバのインストールは完了です。

ダミーディスプレイの設定

詳しくは省略しますが、以下の呪文を唱え、再起動します。

$ sudo update-grub
$ sudo nvidia-xconfig -a --allow-empty-initial-configuration --cool-bits=31 --use-display-device="DFP-0" --connected-monitor="DFP-0"

すると、なんと不思議なことに

オーバークロックができるようになります。こんな感じで。

$ nvidia-settings -a "[gpu:0]/GPUPowerMizerMode=1"
$ nvidia-settings -a "[gpu:0]/GPUFanControlState=1"
$ nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=80"
$ nvidia-settings -a "[gpu:0]/GPUGraphicsClockOffset[3]=100"
$ nvidia-settings -a "[gpu:0]/GPUMemoryTransferRateOffset[3]=100"

簡単に説明すると、nvidia-smi0番目のGPUに対して、

  • 冷却ファンのスピードを80%に固定
  • コアクロック+100MHz
  • メモリクロック+100MHz

です。

このコマンド、SSH経由では実行できないのが今の悩み。調べている範囲ではDISPALY=:0とすればいいだけらしいんですが、この手順で作成した環境ではムリでした。だれか教えて。

CUDAのインストール以降

ここからChainerのサンプル動かすまでは前回の記事と同じ手順です。

感想

パッケージマネージャに頼るな。暖房いらない。