NVIDIA TitanX 2枚差しを認識させるまで

この記事は
===

* ディープラーニング用にNVIDIAのTitanX(Pascal)の2枚差しマシンを入手したので認識させるまでの手順メモです
* 開封の儀的にうれしかった勢いで書いただけなのでほぼ有用な情報はありません

環境
===

* ubuntu-14.04
* NVIDIA TITAN X (Pascal) * 2

GPUのIDリストを更新
===

* GPU見えてるかなー、と確認

```
$ lspci | grep -i nvidia
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1b00 (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 10ef (rev a1)
02:00.0 VGA compatible controller: NVIDIA Corporation Device 1b00 (rev a1)
02:00.1 Audio device: NVIDIA Corporation Device 10ef (rev a1)
```

* 普通に見えてるっぽい
* Titanとかの名前がない
* 名前のリストを更新するコマンドがあったので実行

```
$ update-pciids
Downloaded daily snapshot dated 2016-12-15 03:15:01
```

* おおっ

```
$ lspci | grep -i nvidia
01:00.0 VGA compatible controller: NVIDIA Corporation GP102 [TITAN X] (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 10ef (rev a1)
02:00.0 VGA compatible controller: NVIDIA Corporation GP102 [TITAN X] (rev a1)
02:00.1 Audio device: NVIDIA Corporation Device 10ef (rev a1)
```

ドライバをインストール
===

* リポジトリの追加

```
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
```

* よさげなパッケージを検索

```
$ apt-cache search nvidia-\d+
nvidia-304 - NVIDIA legacy binary driver - version 304.132
nvidia-304-updates - Transitional package for nvidia-304
nvidia-331 - Transitional package for nvidia-331
nvidia-331-updates - Transitional package for nvidia-340
nvidia-340 - NVIDIA binary driver - version 340.98
nvidia-367 - NVIDIA binary driver - version 367.57
nvidia-355 - NVIDIA binary driver - version 355.11
nvidia-358 - NVIDIA binary driver - version 358.16
nvidia-361 - NVIDIA binary driver - version 361.45.18
nvidia-364 - NVIDIA binary driver - version 364.19
nvidia-370 - NVIDIA binary driver - version 370.28
nvidia-375 - NVIDIA binary driver - version 375.20
nvidia-docker - NVIDIA Docker container tools
```

* nvidia-375てのが最新ぽいのでこれを使う

```
$ apt-get install nvidia-375
```

動作確認
===

* やったー
 
```
# nvidia-smi
Thu Dec 15 14:31:24 2016       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.20                 Driver Version: 375.20                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  TITAN X (Pascal)    On   | 0000:01:00.0     Off |                  N/A |
| 24%   43C    P0    55W / 250W |      0MiB / 12218MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  TITAN X (Pascal)    On   | 0000:02:00.0     Off |                  N/A |
|  0%   37C    P0    53W / 250W |      0MiB / 12221MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
```

### 2017/1/10追記

* nvidia-smi実行時に下記のエラーが出る場合があります

```
# nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
```

* うまくドライバがインストールできていないようです。
* UEFI Secure Bootが有効になっているとうまくいかないケースがあるようです。
* ファームウェアの設定でUEFIをOFFにして普通にBIOS経由で立ち上げてドライバをインストールし直したら直りました。


次回
===

* docker上でtensorflowを利用する手順をまとめる予定