機械学習でよく使われるTensorflowやPyTorchでは,GPUすなわちCUDAを使用して高速化を図ります.
ライブラリのバージョンごとにCUDAおよびcuDNNのバージョンが指定されています.最新のTensorflowやPyTorchをインストールしようとすると,対応するCUDAをインストールしなければなりません.
例えば,PyTorch 1.13.1をインストールする場合,CUDAが11.6, 11.7を導入する必要があります.
この記事では,CUDA 10.1.105をインストール済みのマシンをCUDA 11.7にアップグレードした際の手順を残しておきます.
環境
- OS:Ubuntu 18.04
- GPU:NVIDIA GeForce RTX 2080 Ti
アップグレード前の古いバージョンは下記の通りでした.
cat /usr/local/cuda/version.txt
CUDA Version 10.1.105
インストールおよびアップグレード方法
手順
インストールする場合もアップグレードする場合も手順は同様で,下記の通りです.
- 古いドライバやライブラリを削除
- CUDA ToolkitのダウンロードとCUDAをインストール
古いライブラリやドライバがインストールされているとコンフリクトを起こしてしまいます.
古いドライバやライブラリの削除
この時のCUDAの最新バージョンは12.1.0でした.
インストールしたいバージョンは11.7のため,apt-get install cuda-11-7
のようにバージョンを指定します.
apt clean
apt update
apt purge cuda* nvidia-*
apt autoremove
CUDA ToolkitのダウンロードとCUDAをインストール
CUDA Toolkitのダウンロード
下記URLにCUDAのアーカイブがあります.インストールしたいバージョンのURLに飛びます.
https://developer.nvidia.com/cuda-toolkit-archive
CUDA 11.7のページにアクセスし,OS,アーキテクチャなどを指定します.
今回はaptでインストールするので,Installer Typeはdeb(network)としました.
手順に沿ってインストール作業を行います.
パッケージを追加し,CUDA 11.7をインストールします.
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-keyring_1.0-1_all.deb
dpkg -i cuda-keyring*.deb
apt-get update
apt-get install cuda-11-7
注意点として,apt-get install cuda
を実行すると最新バージョンがインストールされるため,apt-get install cuda-11-7
のようにバージョン指定する必要があります.
インストール後は再起動が必要です.
reboot
再起動後にCUDAのバージョンがアップグレードされていることを確認できれば,作業完了です.
/usr/local/cuda/bin/nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Jun__8_16:49:14_PDT_2022
Cuda compilation tools, release 11.7, V11.7.99
Build cuda_11.7.r11.7/compiler.31442593_0
付録
失敗例
古いドライバやライブラリを削除せずにCUDA Toolkitをインストールしようとした際の失敗例を戒めとして残しておきます.
apt install cuda
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
cuda : Depends: cuda-12-1 (>= 12.1.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
複数のCUDAバージョンのインストールして,特定バージョンをデフォルトにする
最新版(12.1)もインストールしてみました.
最新版をインストールすることで,デフォルトのCUDAバージョンがアップグレードされてしまいます.
/usr/local/cuda/bin/nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Feb__7_19:32:13_PST_2023
Cuda compilation tools, release 12.1, V12.1.66
Build cuda_12.1.r12.1/compiler.32415258_0
今回は11.7をデフォルトとして使いたいので,デフォルトのCUDAバージョンを下記コマンドで変更します.
11.7の優先度が高くなっていることが確認できます.
update-alternatives --config cuda
There are 2 choices for the alternative cuda (providing /usr/local/cuda).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/local/cuda-11.7 200 auto mode
1 /usr/local/cuda-11.7 200 manual mode
2 /usr/local/cuda-12.1 121 manual mode
nvcc
の結果も同様です
/usr/local/cuda/bin/nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Jun__8_16:49:14_PDT_2022
Cuda compilation tools, release 11.7, V11.7.99
Build cuda_11.7.r11.7/compiler.31442593_0