UbuntuのアップグレードをしたところCudaが動かなくなったので、修正したときのメモです。
基本的には、こちらのリンクの通りでうまく行ったのですが、cudaのアップグレードでエラーがでたため、cuda-driversのインストールなどをしてUbuntuのアップグレードをしました。但しその後cudaが動かなくなり、driverのインストールを行って無事GPUの環境を再現できました。
行ったこと
- Ubuntu16.04 -> Ubuntu18.04 -> Ubuntu20.04にアップグレードした。
- Ubuntu20.04dでGPUが動かなくなったため、修正した。
動作環境
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.6 LTS"
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.4 LTS"
1. Ubuntuのアップグレード
こちらのリンクを参照しました。
$sudo apt update
$sudo apt upgrade
$sudo apt dist-upgrade
$sudo apt install ubuntu-release-upgrader-core
$sudo do-release-upgrade
最初の sudo apt updateのところで、cudaの公開鍵に関連したwarningなどがでて上手く解決できませんでした。そのまま先に進んだところ、sudo do-release-upgrade のところでcuda-driversのアップグレードが必要とのメッセージがでてUbuntuのアップグレードができなかったために、以下のコマンドでcuda-driversをインストールしました。
$sudo aptitude install cuda-drivers
これによりsudo apt updateのエラーがなくなり、上記sudo do-release-upgradeまで行うことでUbuntu18.04へのアップグレードができました。その後は、先程のリンクにも書かれている通り、上記を繰り返すことで、無事Ubuntu20.04へアップグレードできました。
$sudo apt update
$sudo apt upgrade
$sudo apt dist-upgrade
$sudo apt install ubuntu-release-upgrader-core
$sudo do-release-upgrade
2. GPU環境の再構築
Ubuntu16.04ではpytorchでcudaを使っていました。Anacondaの仮想環境で、jupyter notebookを立ち上げて、というところまでは、20.04でも問題なく動作したのですが、以下でcudaが動作していないことがわかりました。
import torch
print(torch.cuda.is_available())
-> False
GPUは認識されているようでした。
$lspci | grep -i nvidia
01:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GP102 HDMI Audio Controller (rev a1)
そこで、こちらのリンクを参考に、NVIDIAのGPUドライバをインストールすることで解決しました。
$ sudo apt update
$ sudo apt upgrade
$ sudo ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001B06sv00001462sd00003609bc03sc00i00
vendor : NVIDIA Corporation
model : GP102 [GeForce GTX 1080 Ti]
driver : nvidia-driver-510 - distro non-free recommended
driver : nvidia-driver-390 - distro non-free
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-450-server - distro non-free
driver : nvidia-driver-418-server - distro non-free
driver : nvidia-driver-470 - distro non-free
driver : nvidia-driver-510-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
ちなみに、上記リンクによると、sudo ubuntu-drivers devicesが動作しないときは、以下のようにubuntu-driversをインストールするとよいそうです。
$ udo apt install -y ubuntu-drivers-common
上記でrecommendedとなっているdriver(上記ではnvidia-driver-510)をインストールするとよいそうなので、以下のようにインストールして、再起動しました。
$sudo apt install -y --no-install-recommends nvidia-driver-510
再起動後に, インストールを確認します。
$nvidia-smi
Mon May 9 11:59:06 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.60.02 Driver Version: 510.60.02 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A |
| 29% 44C P0 58W / 250W | 239MiB / 11264MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1171 G /usr/lib/xorg/Xorg 53MiB |
| 0 N/A N/A 2174 G /usr/lib/xorg/Xorg 82MiB |
| 0 N/A N/A 2311 G /usr/bin/gnome-shell 89MiB |
+-----------------------------------------------------------------------------+
pytorchから確認すると、cudaが使えるようになっていました。
import torch
print(torch.cuda.is_available())
-> True