Nvidia Driver, CUDA, cuDNN, gcc, g++のインストール(Ubuntu 20.04 on MacBookPro 15" Late 2013)
NvidiaのGPUは、"Compute Capability"と呼ばれるパラメータを用いて区分されます。 "Compute Capability" によって、利用可能なCUDAのバージョンとcuDNNのバージョンが決まります。
私のMacBookProに関しては、GPUは"GeForce GT 750M"であり、"Compute Capability"は3.0です。
この場合、以下の組み合わせを用いると、GPUを使うアプリがうまく動きました。
CUDA | 10.2 |
cuDNN | 7.6.5 |
gcc, g++ | 8系列 |
参考
- https://developer.nvidia.com/cuda-gpus
- https://docs.nvidia.com/deeplearning/sdk/cudnn-support-matrix/index.html
- https://docs.nvidia.com/cuda/archive/10.2/cuda-installation-guide-linux/index.html
以下、インストールの記録です。
gcc-8, g++-8
インストール
Ubuntu 20.04がインストールされた環境では、gcc-9, g++-9が利用可能です。しかし、CUDA10.2, cuDNN7.6.5のサンプルプログラムは、この環境ではコンパイルできません。そこで、gcc-8, g++-8をインストールします。
$ sudo apt install gcc-8 $ sudo apt install g++-8
環境の制御
共存する8系列と9系列を使い分けるために、"update-alternatives"を用います。
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 70 --slave /usr/bin/g++ g++ /usr/bin/g++-9 $ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 50 --slave /usr/bin/g++ g++ /usr/bin/g++-8
上記2個のコマンドの実行後、以下のコマンドで8系列と9系列の間で環境を切り替えることができます。
$ sudo update-alternatives --config gcc There are 2 choices for the alternative gcc (providing /usr/bin/gcc). Selection Path Priority Status 0 /usr/bin/gcc-9 70 auto mode * 1 /usr/bin/gcc-8 50 manual mode 2 /usr/bin/gcc-9 70 manual mode
上記表示の後に、希望の選択肢を入力します。
CUDA 10.2
Nvidiaの"CUDA 10.2"の解説ページを参照して、作業を進めます。
https://docs.nvidia.com/cuda/archive/10.2/cuda-installation-guide-linux/index.html
具体的な手順は、以下の通りです。
"linux-headers"のインストール
自分のシステムのカーネルのバージョンと同じバージョンのヘッダをインストールします。
$ uname -r 5.4.0-39-generic $ sudo apt install linux-headers-5.4.0-39-generic
Nvidiaのページには、以下のone linerがありました。
sudo apt-get install linux-headers-$(uname -r)
"CUDA Toolkit 10.2"のインストール
下記URLで自分のシステムの情報を入力すると、インストール用のコマンドセットが表示されます。
https://developer.nvidia.com/cuda-10.2-download-archive
表示されたコマンドを入力して、CUDAをインストールします。
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin $ sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 $ wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb $ sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb $ sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub $ sudo apt-get update $ sudo apt-get -y install cuda
パスの設定
~/.bashrc に、以下の設定を追加します。
export PATH="/usr/local/cuda/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
以上により、CUDAがインストールされます。nvccを実行してみます。
$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2019 NVIDIA Corporation Built on Wed_Oct_23_19:24:38_PDT_2019 Cuda compilation tools, release 10.2, V10.2.89
また、CUDA10.2に適した nvidia driver (最新ではない)もインストールされます。nvidia-smiを実行してみます。
$ nvidia-smi Sat Jul 4 01:25:50 2020 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 440.33.01 Driver Version: 440.33.01 CUDA Version: 10.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GT 750M On | 00000000:01:00.0 N/A | N/A | | N/A 52C P8 N/A / N/A | 332MiB / 1999MiB | N/A Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 Not Supported | +-----------------------------------------------------------------------------+
CUDAのサンプルをビルドしてみます。
$ cuda-install-samples-10.2.sh ./ (カレントディレクトリにサンプルコードのセットがコピーされます) $ cd NVIDIA_CUDA-10.2_Samples/ ここで、makeと入力すると、多数のサンプルをコンパイルしますが、時間もかかるので、 適当なサンプルを選んでコンパイルします。 $ cd 5_Simulations/smokeParticles/ $ make $ ./smokeParticles
cuDNN 7.6.5
Nvidiaの下記ページから、cuDNNのパッケージをダウンロードします。
メンバー登録が必要です。
https://developer.nvidia.com/rdp/cudnn-download
CUDA10.2用のcuDNN v7.6.5の3つのパッケージをダウンロードします。
- 1) libcudnn7_7.6.5.32-1+cuda10.2_amd64.deb
- 2) libcudnn7-dev_7.6.5.32-1+cuda10.2_amd64.deb
- 3) libcudnn7-doc_7.6.5.32-1+cuda10.2_amd64.deb
1,2は必須、3は任意です。
各パッケージをインストールします。
$ sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.2_amd64.deb $ sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.2_amd64.deb $ sudo dpkg -i libcudnn7-doc_7.6.5.32-1+cuda10.2_amd64.deb
cuDNNのサンプルをビルドしてみます。
$ cp -r /usr/src/cudnn_samples_v7 ./ (サンプルコードのセットがカレントディレクトリにコピーされます) $ cd ./udnn_samples_v7/mnistCUDNN/ $ make $ ./mnistCUDNN (これで"Test passed!"と表示されれば成功です)
以上で、インストールは終了です。