wsl上でcuda toolkitを入れたらnvidia-smiでエラーが出るようになったのでメモ
こちらで環境に合わせたインストールコマンドがわかる
CUDA Toolkit 11.1 Update 1 Downloads | NVIDIA Developer
入れる前に実行してあったnvidia-smiの結果
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 470.57.01 Driver Version: 471.41 CUDA Version: 11.4 | |-------------------------------+----------------------+----------------------+ | 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 | | 30% 33C P8 16W / 350W | 529MiB / 24576MiB | ERR! Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
この時点でGPU-Util部分がERR!となっているが、これはwsl上で実行するとこうなってしまう模様。nvidia側のupdateが必要とのこと。
cuda toolkitを入れた後
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 510.39.01 Driver Version: 471.41 CUDA Version: 11.4 | |-------------------------------+----------------------+----------------------+ | 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 | | 30% 35C P8 20W / 350W | Function Not Found | ERR! Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
Memory-UsageがFunction not foundという表示となっている。
インストールしたパッケージを調べていくと、cuda toolkitのインストール時にはwsl専用のコマンドを指定する必要があった。環境選択時にちゃんとwslという選択用のボタンもあったのだが見逃してubuntuを選択して出てきたコマンドを使ってしまった。
インストールされたパッケージの中にはdriverと書かれたものもあったので、ubuntu用のdriverも入ってしまったためにwindows側の正しいdriverにアクセスできなくなったのではと考えられる。
ということで入れたパッケージを調べてアンインストールしてみる。 /var/log/dpkg.logでインストールしたパッケージと時刻がわかるので上記でインストールされたnvidiaと書かれたパッケージをすべて削除する。
cat /var/log/dpkg.log | grep nvidia # 時刻を見て入ってしまったであろうパッケージを列挙 apt remove nvidia-prime libnvidia-compute-510 nvidia-modprobe libnvidia-common-510 nvidia-kernel-source-510 nvidia-utils-510 libnvidia-cfg1-510 libnvidia-fbc1-510 libnvidia-fbc1-510 nvidia-compute-utils-510 libnvidia-extra-510 libnvidia-decode-510 nvidia-kernel-common-510 libnvidia-encode-510 libnvidia-gl-510 xserver-xorg-video-nvidia-510 nvidia-dkms-510 nvidia-driver-510 nvidia-settings
削除後はnvidia-smiの出力がもとの状態に戻った。
ところで調べる中で以下の2つで表示されるcudaのversionが異なることが気になった。私がおかしいなものを入れてしまったせいなのかと思ったがどうやらそうではなかった。
nvidia-smiとnvccで表示されるCUDAバージョンが異なる件
nvidia-smiで表示されるものはdriverが対応しているcudaの最大versionを表しているとのこと。勉強になりました。