サブロウ丸

Sabrou-mal サブロウ丸

主にプログラミングと数学

CUDA version update

CUDAのバージョンを上げたときの手順を記録しておきます。 バージョンアップの方法を検索するとさまざまな方法が出てきますが、結局公式の方法が最もストレートでした。

環境: Ubuntu v18.04

上記のリンクから環境に合わせて選択。私の場合は

  • Operating System: Linux
  • Architecture: x86_64
  • Distribution: Ubuntu
  • Version: 18.04
  • Installer Type: deb (network)

を選択。表示されるコマンドを打ち込むだけ。


これが失敗する場合、例えば私は

The following packages have unmet dependencies:
 cuda : Depends: cuda-11-7 (>= 11.7.1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

こんなエラーが出ましたが

sudo apt-get clean
sudo apt-get update
sudo apt-get purge nvidia-* 
sudo apt-get autoremove
sudo apt-get install -y cuda

でインストールが動きました*1。3行目のapt-get purgeは、パッケージとそのパッケージの環境設定をすべて削除するコマンドです。


あとはnvidia-smiを実行してCUDAのバージョンを確認するだけ。 これが失敗する場合、例えば

Failed to initialize NVML: Driver/library version mismatch

と表示される場合は、まず再起動(sudo reboot)を試し、それでもダメなら

lsmod | grep nvidia

で表示されるnvidia_*をrmmodします(カーネルモジュール(モジュール)をアンロードするコマンド)*2

私の場合は

nvidia_uvm            798720  0
nvidia_drm             45056  0
nvidia_modeset       1093632  1 nvidia_drm
nvidia              17895424  17 nvidia_uvm,nvidia_modeset
drm_kms_helper        172032  2 ast,nvidia_drm
ipmi_msghandler        53248  4 ipmi_devintf,ipmi_si,nvidia,ipmi_ssif
drm                   401408  5 drm_kms_helper,ast,nvidia_drm,ttm

と表示されたので

sudo rmmod nvidia_uvm
sudo rmmod nvidia_drm
sudo rmmod nvidia_modeset
sudo rmmod nvidia

を実行して、再起動したらnvidia-smiが動く、という感じになりました。