LoginSignup
1
0

Ubuntu22.04LTSでカーネルアップデート後GPUを認識しない

Last updated at Posted at 2024-02-23

環境

・Ubuntu22.04LTS(desktop,non GA kernel,Linux kernel 6.5)
・Nvidia-driver-545
・CUDA12.1
・Ryzen7 5700X
・RTX4070 Ti

経緯

unattended-upgrade -v

をしたところ、以下のパッケージのupgradeが実行された。

 linux-modules-extra-6.5.0-21-generic
 headers-6.5.0-21-generic:amd64
 linux-hwe-6.5-headers-6.5.0-21
 linux-modules-6.5.0-21-generic
 linux-image-6.5.0-21-generic

アップグレード後、nvidia-smiでGPUを認識せず、Nvidia-driverが異常だと思われた。

NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running. 

(画面自体は写っているのでハードとしては動いている)
ドライバを再インストールしたら直ったとの記事があったので
https://qiita.com/mikoaisa/items/1c780819d1ef26c66aa8

apt reinstall nvidia-driver-545

しても認識しない。

nvidia-driverを認識しなくなる原因

最初CUDA12.1はカーネルバージョン5.15系でリリースされているのでそれが悪さしているのかと思った。CUDA12.3は6系でリリースされているため、CUDAのアップグレードも検討したが、pytorchがサポートしているのがCUDA12.1までなので12.3に上げるのは躊躇われた。大抵動くがこういうのでハマると長い。
https://docs.nvidia.com/cuda/archive/12.1.0/cuda-installation-guide-linux/index.html

調べていくと結局CUDAは直接の関係はなく、カーネルアップデート後、dkmsを再度行う必要があるようだが、これが失敗していることが原因だった
https://forums.developer.nvidia.com/t/whats-the-process-for-fixing-nvidia-drivers-after-kernel-updates-in-ubuntu-20-04/208870

症状

dkmsに手動でインストールするために以下のコマンドを実行するが失敗してdkmsが登録できない

sudo dkms install -m nvidia -v <driver_version>

dkmsが失敗する原因

/var/lib/dkms/nvidia/545.23.08/build/make.log

を見たところ、

cc: error: unrecognized command-line option ‘-ftrivial-auto-var-init=zero’

gccがコンパイル時に指定された引数を正しく処理できていないよう。
これは標準のgccのバージョンが古い(ver.11)ためにおこるようだ。
https://forums.linuxmint.com/viewtopic.php?t=389943

対策

gccのバージョンを12に変更する。

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12

そして再度

sudo dkms install -m nvidia -v <driver_version>

を実行。これでGPUを認識するようになった。
※は/usr/src配下のフォルダを確認して正確なバージョンを確認すること

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0