Ubuntu 16.04にGTX 1080Tiドライバをインストール(外付けGPUを計算のみで使用したい)


DNN環境を構築しています。
先日、nvidiaのドライバを導入しましたが、以下のようにncidia-smiの結果のProcessesのところにXorgなど、ディスプレイするためのプロセスが外付けGPUとなるGTX 1080Tiで実行されていました。

※2017/03/17追記
事前にnouveaドライバを確認して、もし存在していたら、競合の可能性があるんで削除しておく必要があります。

$ nvidia-smi
Sat Mar  3 22:10:17 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 387.34                 Driver Version: 387.34                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108...  Off  | 00000000:01:00.0 Off |                  N/A |
| 23%   37C    P8    13W / 250W |    502MiB / 11172MiB |      5%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1227      G   /usr/lib/xorg/Xorg                           312MiB |
|    0      1889      G   compiz                                        97MiB |
|    0      2233      G   ...-token=532F1718A85672DA26673917C31FD9C6    89MiB |
+-----------------------------------------------------------------------------+

私のPCは、Intel Core i7 7700Kを積んでいて、このCPUには、オンボードGPU(インテル® HD グラフィックス 630)が搭載されているので、ディスプレイ描画処理は、こちらに任せたい。
いろいろと調べた結果、ドライバインストール時にOpenGLを無効にしてインストールする日強yがあったようです。
以下に手順を示します。

0.環境

  • OS : Ubuntu 16.04 LTS
  • GPU : NVIDIA GTX 1080Ti
  • PC : DAIV-DGZ510(Intel Core i7 7700K搭載)

1.インストール済みのnvidiaのドライバをアンインストール

以下の手順で先日インストールしたnvidiaのドライバ(nvidia-387)をアンインストールします。

$ sudo apt-get --purge remove nvidia-387 

2.nvidiaドライバのインストーラをダウンロード

aptパッケージでは、OpenGLの無効化ができない(?)ようでしたので、Nvidia Unix Driversより、nvidiaドライバのインストーラ(NVIDIA-Linux-x86_64-387.34.run ※NVIDIA-Linux-x86_64-390.48.run[2018/05/27更新、最新版にしました] )をダウンロードしてきました。

3.Dynamic Kernel Module Support(DKMS)のインストール(※以下、2018/05/27更新)

カーネルのバージョンアップ時に自動的に再コンパイルされるようにするため、DKMSをインストールします。

$ sudo apt install dkms

4.nvidiaドライバのインストール

X Window Systemを停止させます。

$ sudo systemctl stop lightdm

Ctrl+Alt+F2で仮想コンソールに切り替え、ログインします。
ログイン後、nvidiaのドライバインストーラを起動し、ドライバをインストールします。
この時、--no-opengl-files--no-libglx-indirect及び、--dkmsを指定します。

$ sudo ./NVIDIA-Linux-x86_64-390.48.run  --no-opengl-files --no-libglx-indirect --dkms

インストール後、リブートします。

$ sudo reboot

5.確認

システムが起動したら、nvidia-smiでGPUの状態を確認します。

$ nvidia-smi
Sun May 27 12:58:14 2018       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.48                 Driver Version: 390.48                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 108...  Off  | 00000000:01:00.0 Off |                  N/A |
| 23%   29C    P8     9W / 250W |      9MiB / 11178MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1585      G   /usr/lib/xorg/Xorg                             6MiB |
+-----------------------------------------------------------------------------+

Processes項目が、「No running processes found」となり、他のプロセスがGTX 1080Tiで動作していないことが確認できます。

尚、intelのオンボードGPUの状況確認は、intel_gpu_topコマンドで確認できます。

$ sudo intel_gpu_top

6.nvidia-settingsを利用可能にする

nvidia-settingsを使ったクロックやファンの制御を行うには、xorg.confを作成して、nvidiaのドライバを読み込む必要があります。

以下のコマンドでGPUのBusIDを調べます。

$ nvidia-xconfig --query-gpu-info
Number of GPUs: 1

GPU #0:
  Name      : GeForce GTX 1080 Ti
  UUID      : GPU-46bd0afa-863e-20ff-6c5e-6a2694391aa0
  PCI BusID : PCI:1:0:0

  Number of Display Devices: 0

以下の内容で、/etc/X11/xorg.confを作成します。
BusIDは、先ほど調べたBusIDを指定します。

/etc/X11/xorg.conf
Section "ServerLayout"
    Identifier  "Layout"
    Screen 0    "intel"
    Screen 1    "nvidia"
EndSection

Section "Device"
    Identifier  "intel"
    Driver      "intel"
EndSection

Section "Device"
    Identifier  "nvidia"
    Driver      "nvidia"
    BusID       "PCI:1:0:0"
EndSection

Section "Screen"
    Identifier  "intel"
    Device      "intel"
EndSection

Section "Screen"
    Identifier  "nvidia"
    Device      "nvidia"
    Option      "AllowEmptyInitialConfiguration" "True"
    Option      "Coolbits" "12"
EndSection

以上です。

※2018/05/27追記
xorg.confの設定後、X Windowの端末を開くと、右上に寄って表示されるようになった。
どうもAllowEmptyInitialConfigurationが悪さをしている模様・・
このオプションを外すと、nvidia-settingsが正しく起動しない。
とりあえず、nvidia-settingsについては、保留。

参考ページ