7
3

More than 3 years have passed since last update.

CUDA及びnvidia-driverのインストール方法

Posted at

CUDA及びnvidia-driverのインストール方法

  • CUDA(Compute Unified Device Architecture)とは、Nvidiaが開発しているGPUアクセラレーションアプリケーションを作成するための開発環境です。

  • nvidia-driverはその名の通り、GTXRTXシリーズを始めとするNvidia製のGPUを制御するためのドライバです。

これら2つの役割を簡単に説明すると、nvidia-driverがハードとOSの仲介役となり、その上でCUDAというツールキット(アプリケーション郡)がpythonなどのプログラムにGPUリソースを提供します。

インストール方法

昔は動作しているグラフィックドライバを停止したり、dkms等でカーネルを焼き直す等々の作業が必要でしたが、今日はdebファイル一つで簡単にインストール可能です。

CUDA11.2Ubuntu 16.04にインストールする場合の手順を示します。

1. CUDA toolkit配布サイトより自分の環境を選択していき、.debファイルのダウンロードコマンドを確認する

まず、CUDA Toolkit 11.2 Downloads にアクセスします。

  • Linux -> x86_64 -> Ubuntu -> 16.04 -> deb(local)の順に選択して行くと

Download Installer for Linux Ubuntu 16.04 x86_64

というコンテンツボックス内に.debファイルのダウンロード方法が表示されます。

edit.png

2. debファイルを用いてCUDAのインストール

実際に表示されたコマンドを以下に示しますが、あくまで一例なので必ず自分で操作した時のコンテンツボックスに表示されたコマンドを入力して下さい。

コンテンツボックスの中身
   #  リポジトリに優先度の登録
   wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-ubuntu1604.pin
   sudo mv cuda-ubuntu1604.pin /etc/apt/preferences.d/cuda-repository-pin-600

   # debファイルのダウンロード
   wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda-repo-ubuntu1604-11-2-local_11.2.0-460.27.04-1_amd64.deb

   # debファイルを用いてシステムにパッケージのインストール
   sudo dpkg -i cuda-repo-ubuntu1604-11-2-local_11.2.0-460.27.04-1_amd64.deb
   sudo apt-key add /var/cuda-repo-ubuntu1604-11-2-local/7fa2af80.pub

   # パッケージ一覧を更新
   sudo apt-get update

3. 自分の環境に合ったメタパッケージのインストール

 dpkg -iにてパッケージのインストールできましたが、まだシステムには反映されていません。最後にsudo apt installコマンドを用いてパッケージをシステムに適用させるのですが、ここで注意が必要です。コンテンツボックスではsudo apt install cudaとなっていますが、自分の用途に合わせて反映させるメタパッケージは変える必要があります。

 メタパッケージの一覧を公式サイト(3.10.3. Meta Packages)より抜粋、さらに和訳して以下に示します。
 
 主に指定するメタパッケージは以下の2つです。

  • cuda-11-2
    • CUDA自体を新規でインストールする時。
  • cuda-toolkit-11-2
    • 既にnvidia-driverがインストール済みの時
    • 既に他のCUDAが存在していて、別バージョンのCUDAをインストールしたい時。
      • 下手にドライバーを上書きすると、マシンが動作しなくなります。

ちなみにCUDA10.1の場合はcuda-10-1というメタパッケージ名になります。臨機応変に変換して下さい。

Meta Package Purpose
cuda すべてのCUDAツールキットとドライバーパッケージをインストールします。新しいcudaパッケージのリリース時に、自動で次のバージョンへのアップグレードを処理します。
cuda-11-2 すべてのCUDAツールキットとドライバーパッケージをインストールします。追加バージョンのCUDAがインストールされるまで、バージョン11.2のままで固定されます。
cuda-toolkit-11-2 CUDAアプリケーションの開発に必要なすべてのCUDAツールキットパッケージをインストールします。ドライバーは含まれていません。
cuda-tools-11-2 すべてのCUDAコマンドラインとビジュアルツールをインストールします。
cuda-runtime-11-2 CUDAアプリケーションの実行に必要なすべてのCUDAツールキットパッケージとドライバーパッケージをインストールします。
cuda-compiler-11-2 すべてのCUDAコンパイラパッケージをインストールします。
cuda-libraries-11-2 すべてのランタイムCUDAライブラリパッケージをインストールします。
cuda-libraries-dev-11-2 すべての開発CUDAライブラリパッケージをインストールします。
cuda-drivers すべてのドライバーパッケージをインストールします。リリース時に、次のバージョンのドライバーパッケージへのアップグレードを処理します。
sudo apt install cuda-11-2

または、

sudo apt install cuda-toolkit-11-2

でCUDAパッケージをシステムに適用します。

複数のCUDAを管理したい。

CUDAnvidia-driverには互換性があります。詳しく知りたい場合は下記の公式サイトを参照して下さい。

Nvidia: Binary Compatibility

CUDA Toolkit Linux x86_64 Driver Version
CUDA 11.1 (11.1.0) >= 450.80.02
CUDA 11.0 (11.0.3) >= 450.36.06
CUDA 10.2 (10.2.89) >= 440.33
CUDA 10.1 (10.1.105) >= 418.39
CUDA 10.0 (10.0.130) >= 410.48
CUDA 9.2 (9.2.88) >= 396.26
CUDA 9.1 (9.1.85) >= 390.46
CUDA 9.0 (9.0.76) >= 384.81
CUDA 8.0 (8.0.61 GA2) >= 375.26
CUDA 8.0 (8.0.44) >= 367.48
CUDA 7.5 (7.5.16) >= 352.31
CUDA 7.0 (7.0.28) >= 346.46
  • nvidia-driver==410.48がインストールされている場合
    • CUDA 10.0, 9.2, 9.1...等がインストールできますが、CUDA11.0はインストールできません。事前に自分が今からインストールするCUDAとdriverの互換性があるかは確認して下さい。

ちなみに、これらのことを考えるのは以下のような状況にある時です。

  • nvidia-driverのバージョンを変えられないor変えたく無い時
    • Google colabで作業している時
    • 既に環境構築済みのマシンに追加でCUDAをインストールする時

下手にnvidia-driverを操作すると環境を破壊してOSの再インストールをする羽目になります。面倒です。

CUDAのインストール場所と切り替え方

CUDAの実態は/usr/localにあります。/usr/local/cuda11-2/usr/local/cuda10-2です。しかし、python等のプログラムはそれらを直接参照しません。cudaという、シンボリックリンクを参照します。

Console
hoge@hoge:/usr/local$ ls -la
drwxr-xr-x 12 root root 4096 10月 15 10:10 .
drwxr-xr-x 13 root root 4096 10月 15 10:10 ..
~~~
lrwxrwxrwx  1 root root    9 10月 15 10:10 cuda -> cuda-11.2
drwxr-xr-x 16 root root 4096 12月 31 23:59 cuda-11-2
drwxr-xr-x 16 root root 4096 10月 15 10:10 cuda-10-2
~~~

上の状態では、cudaディレクトリを参照することはcuda-11-2を参照するのと等価であることがわかります。もしcuda10-2に変更したい場合はln -nfs cuda-10-2 cudaコマンドでcudaへのリンクを貼り直して下さい。こうすることで複数のバージョンのCUDAを管理運用することができます。

cudnnのインストール場所

余談ですが、cudnnというライブラリは/usr/include/cudnn.hにあります。これらのバージョンを確認する場合、以下のように入力するとバージョンの確認ができます。

cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

cudnnはCUDAのバージョンに依存しています。なので、CUDAのバージョンを変えた場合、cudnnをアンインストールした後に適切なバージョンをインストールする必要があります。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3