エラーメッセージ「NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running. 」

以前、機械学習でGPU使えるように設定したまま使っていなかったので、一度使ってみようと思ったら以下のエラーが発生しました。

$ 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.

調べてみると、apt-get upgrade が影響している可能性があるらしい事と再インストールすれば改善しそうという事がわかりました。

環境

  • Ubuntu 18.04.3 LTS
  • Geforce RTX 2060

既存ドライバのアンインストール

まずは以前インストールしていたドライバ・CUDAをアンインストール

$ sudo apt-get --purge remove nvidia-*
$ sudo apt-get --purge remove cuda-*

インストールするドライバのバージョン確認

$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.1/0000:02:00.0 ==
modalias : pci:v000010DEd00001F08sv00001462sd00008C9Fbc03sc00i00
vendor   : NVIDIA Corporation
driver   : nvidia-driver-430 - distro non-free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

nvidia-driver-430 が推奨されました。

ドライバのインストール

$ sudo ubuntu-drivers autoinstall

エラー発生(いくつかのアーカイブを取得できません。)

E: いくつかのアーカイブを取得できません。
apt-get update を実行するか --fix-missing オプションを付けて試してみてください。

エラー対応し、インストール

apt-get update 後、エラーは発生せずインストール完了

インストール後、確認するも解消されず

再起動してコマンド実行するもエラー解消されず

$ 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.

ドライバ自体はインストールされている模様

$ ubuntu-drivers list
nvidia-driver-430
nvidia-driver-435

なぜか nvidia-driver-435 も入ってる。。

CUDAのインストール

CUDAのインストール状況確認

先程CUDAもアンインストールしたので、ubuntu-drivers autoinstall でインストールされているか確認

~$ nvcc -V

Command 'nvcc' not found, but can be installed with:

sudo apt install nvidia-cuda-toolkit

インストール

インストールされてないので、インストール実施

$ sudo apt install nvidia-cuda-toolkit
E: dpkg は中断されました。
問題を修正するには 'sudo dpkg --configure -a' を手動で実行する必要があります。

別のエラーが発生。表示の通り、コマンド実行。

$ sudo dpkg --configure -a
nvidia-dkms-435 (435.21-0ubuntu0.18.04.2) を設定しています ...
:

表示をみると、nvidiaのドライバの設定が行われているようでした。
なので、改めてnvidia-smiを実行するとエラーは表示されなくなりました!

$ nvidia-smi 
No devices were found

ただ、GPUを見つけられてない様子。
ちょっと脇道にそれてしまったので、改めてCUDAインストール。

$ sudo apt install nvidia-cuda-toolkit

無事完了!

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

NVIDIAドライバ・CUDA再インストール完了

ドライバ、CUDAが整ったので、改めてnvidia-smi実行!

$ nvidia-smi 
Tue Nov 12 10:46:44 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 435.21       Driver Version: 435.21       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| 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 RTX 2060    Off  | 00000000:01:00.0 Off |                  N/A |
| 50%   35C    P0    31W / 160W |      0MiB /  5934MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce RTX 2060    Off  | 00000000:02:00.0 Off |                  N/A |
| 47%   34C    P0     1W / 160W |      0MiB /  5934MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

ようやく認識してくれました!

紆余曲折ありましたが、最終的にはドライバ・CUDAの再インストールで nvidia-smiコマンドのエラーが解消されました。

注意点

ドライバを

ubuntu-drivers autoinstall 

でインストールしたあとには、

sudo dpkg --configure -a

する必要があるのを忘れないようにしたいです。