Last update: 2024/12/15
以前Windows 11にCUDA Tool kitをインストールしたが、今回は以下のLinux環境にCUDA Tool kit 12.8をインストールした。
基本的にはNVIDIAの1. Introduction — Installation Guide for Linux 12.8 documentationに沿ってインストールを進める。
なお、使用しているPCのアーキテクチャやLinuxのDistributionによってサポートの有無が異なるので、インストール前に上のページをよく確認する必要がある。例えば上のページを読むと、Rocky Linuxはサポートされているが、Alma Linuxはサポートされていなかったりする。(インストールすれば動きそうな気もするが)
使用しているPCのアーキテクチャやLinuxのDistributionのversionは以下のコマンドで確認できる。
$ uname -m && cat /etc/*release
Windowsの時にも書いたが、GPUがCUDAに対応しているかはCUDA GPUs - Compute Capability | NVIDIA Developerで確認することができる。
今回のPCで使っているGeForce GTX 750 Tiは古めのGPUなのでCompute Capabilityは5.0だが、CUDAには対応している。また、以下のコマンドで現在の環境でGPUが認識されているか確認することができる。
$ lspci | grep -i nvidia
10:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)
10:00.1 Audio device: NVIDIA Corporation GM107 High Definition Audio Controller [GeForce 940MX] (rev a1)
Windowsの時と同様、ホストコンパイラが必要なので今回はGCCを使う。こちらについては以前Alma Linux 9でやった手順と同じ方法でインストールしたので、以下を参照。
C/C++/Fortran:Alma Linux9でC/C++/FORTRANのコンパイラをインストールするCUDA Toolkitのインストール方法はいろいろあるが、基本的にはディストリビューションのパッケージマネージャーでインストールするのがおすすめと書いてあるので、以下のRocky Linuxのインストール方法を読みながらインストールを進める。
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#rhel-rocky-installation私の環境はRocky Linuxなので上の手順の1、2は飛ばす。3については古いキーはそもそも登録されてなかったので、これも飛ばす。ローカルレポジトリを使う or ネットワークレポジトリを使うインストール方法があるが、今回は以下のネットワークレポジトリを使う方法でインストールした。
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#network-repo-installation-for-rhel-rockyあとは手順通り実行していく。私の環境ではarchはx86_64、distroはrhel9に置き換えて実行した。なお、nvidia-gdsもインストールするように書かれているが、ここはerrorが発生したためskipした。
$ sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo
$ sudo dnf clean all
$ sudo dnf install cuda-toolkit
$ sudo dnf install nvidia-gds
なお、上記のページではGPGのインストールについて書かれているが、dnf installを実行したらkeyをインポートするか聞かれるので、yを押せばOK。特に問題なくインストールできたので、いったん再起動する。
$ sudo reboot
以下を読みながらDriverをインストールする。
https://docs.nvidia.com/datacenter/tesla/driver-installation-guide/#rhel-installation上記のページは色々と場合分けしてあるが、私はRocky Linux9の手順に従って以下のコマンドを打ってインストールした。
# dnf config-manager --set-enabled crb
# dnf install epel-release
# dnf module install nvidia-driver:latest-dkms
# reboot
なお、インストールについてはTuring以降のGPUを使っていればnvidia-driver:open-dkmsをインストールするが、私が使っているGPU(Maxwell)のように、Turingより古いGPUではlatest-dkmsをインストールする必要があると書いてあるので注意。
Driverが正しくインストールできたか確認するためにnvidia-smiコマンドを打ってみたが、以下のようにエラーが出てしまった。
$ nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
これについては本筋からそれるので以下のページに対策を書いたが、Secure boot&Nouveauを無効化することで無事に認識するようになった。
$ nvidia-smi
Sat Feb 1 10:14:41 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.86.15 Driver Version: 570.86.15 CUDA Version: 12.8 |
|-----------------------------------------+------------------------+----------------------+
| 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 GTX 750 Ti Off | 00000000:10:00.0 On | N/A |
| 32% 21C P8 1W / 38W | 10MiB / 2048MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
Linux:Rocky Linux 9でNvidiaのDriverが有効にならない - 計算機の箱庭
nvidia-smiも無事に実行できるようになった。
$ nvidia-smi
Sat Feb 1 10:14:41 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.86.15 Driver Version: 570.86.15 CUDA Version: 12.8 |
|-----------------------------------------+------------------------+----------------------+
| 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 GTX 750 Ti Off | 00000000:10:00.0 On | N/A |
| 32% 21C P8 1W / 38W | 10MiB / 2048MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
初期状態だとPATHが通っておらずnvccなどが実行できないので、以下のコマンドでPATHを通す。
$ export PATH=/usr/local/cuda-12.8/bin${PATH:+:${PATH}}
試しにnvccのバージョン表示を実行してみたところ、無事にバージョンが表示された。
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Wed_Jan_15_19:20:09_PST_2025
Cuda compilation tools, release 12.8, V12.8.61
Build cuda_12.8.r12.8/compiler.35404655_0
ただ、このままだとシェルを閉じるとPATHが消えてしまうので、上の一文を~/.bashrcの最後に追加するなどしておくと、自動的にPATHが設定される。
$ echo 'export PATH=/usr/local/cuda-12.8/bin${PATH:+:${PATH}}' >> ~/.bashrc
Copyright (c) 2024 kd