Ubuntu でNVIDIAのGPUがうまく動かなくなった時の対処法【2024年12月版】

NVIDIAのGPUドライバーがプロプライエタリからオープンソースに移行したことに伴い、過去にプロプライエタリドライバを使っていた方がアップデートがうまくいかずトラブル場合が多々あります。

その時の対処法を以下に示します。

1.1. 過去の cuda のプロテクト解除

人によってはCUDAのバージョンを固定していた場合があるかもしれません。

  • ターミナルから以下のようにタイプします。
    apt-mark showhold
    
  • これで何も表示されなければ次に進みます。もし、cuda 関連が表示されたら、次のように対応します。もし、cuda-11-8 が表示されていたら
    sudo apt-mark unhold cuda-11-8
    
  • 「cuda-11-8 の保留を解除しました。」となれば大丈夫です。

1.2. cuda-11-8のアンインストール

  • 過去の cuda-11-8 をアンインストールします。

    sudo apt remove cuda-11-8
    
  • この後はメッセージに従って 続行しますか? [Y/n] と出たらEnterをタイプします。

2.1. cuda のアンインストール

  • cuda-11-8 だけでなく、cuda もアンインストールします。

    sudo apt remove cuda
    

2.2. 関連ファイルの削除

  • 以下で関連ファイルで不要になったものが削除できます。
    sudo apt autoremove
    

2.3. nvidiaのライブラリ・ドライバを削除

  • nvidiaのライブラリ・ドライバを一度全部削除します。下のコマンドのシングルクォートとあるのは、 ‘ に置き換えてください。ソースコードがうまく表示できないためです。
    sudo apt remove シングルクォート*nvidia*シングルクォート
    

3. PCの再起動

  • PCを再起動します。
    reboot
    

4. リポジトリのアップデート

  • リポジトリをアップデートします。
    sudo apt update
    

5.1. cuda-keyring のダウンロード

  • Ubuntuのバージョンにあわせたファイルをダウンロードします。アドレスが 2004 か 2204 か 2404 で変えてください。以下は、2204のものです。
    cd ~/Downloads
    rm cuda-keyring*.deb
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
    

5.2. cuda-keyring のインストール

  • 以下でcuda-keyringをインストールします。
    sudo apt install ./cuda-keyring_1.1-1_all.deb
    

5.3. nvidia-driver-560-open のインストール

  • nvidia-driver をインストールします。2024年12月時点では 565 が最新なのですが、後ほど cuda-12-6 を入れると 560にダウングレードされるので、それを入れます。
    sudo apt install nvidia-driver-560-open
    

5.4. cuda および nvidia-cuda-toolkit のインストール

  • 本丸のcudaのインストールに入ります。ここで 無印のcuda を入れようとするとエラーになるので、バージョン指定で最新の cuda-12-6 をインストールします。不要なものもたくさん入らないように –no-install-recommends をつけます。
    sudo apt install --no-install-recommends cuda-12-6
    sudo apt install --no-install-recommends nvidia-cuda-toolkit
    

6. 再起動

  • 改めて再起動します。
    reboot
    

7. 確認

  • nvidia-smi および nvcc でCUDAを確認します。
    nvidia-smi
    
  • 以下のような表示がされれば大丈夫です。
    $ nvidia-smi 
    Sun Dec 29 00:25:21 2024       
    +-----------------------------------------------------------------------------------------+
    | NVIDIA-SMI 560.35.05              Driver Version: 560.35.05      CUDA Version: 12.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 RTX 3070 Ti     Off |   00000000:01:00.0  On |                  N/A |
    |  0%   47C    P5             28W /  290W |     826MiB /   8192MiB |     23%      Default |
    |                                         |                        |                  N/A |
    +-----------------------------------------+------------------------+----------------------+
    
  • 次に現在使われているcudaのドライバーを確認します。
    nvcc -V
    
  • 次のように表示されればOKです。
    $ nvcc -V
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2024 NVIDIA Corporation
    Built on Tue_Oct_29_23:50:19_PDT_2024
    Cuda compilation tools, release 12.6, V12.6.85
    Build cuda_12.6.r12.6/compiler.35059454_0
    

ちなみに、FSLでGPUを使う場合、CUDAのバージョンを心配しなくてよくなりました。また、PyTorchも試してみたのですが、CUDA12.4版を使えば、普通に使えます。

したがって、しばらくこれでいけそうです。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください