ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

UbuntuでNVIDIA CUDAをインストールする他のやりかた / LXCやDockerでの利用

LinuxでNVIDIA CUDAを使う場合、次のようにセットアップすると思います。

  • 対応するNVIDIA GPUを用意する
  • CUDAがサポートするLinuxをインストールする
  • NVIDIAのCUDAパッケージリポジトリーを追加する
  • CUDAをインストールする
  • コンテナーでCUDAを使いたい場合は「NVIDIA Container Toolkit」をインストールする

Ubuntuにはnvidia-cuda-toolkit という名前でCUDAが標準リポジトリーで提供されています。 バージョン制約がなければこのパッケージを使うこともできます(パッケージについて)。

ちなみにCUDAとNVIDIA GPU Driver、NVIDIA GPUハードウェアにはバージョンマトリックスが存在します。 NVIDIA GPUのCUDA対応状況はCUDA GPUs、GPU DriverとCUDAのバージョンの関係についてはCUDA リリースノート を確認すると良さそうです。

Ubuntuパッケージを使ったCUDAのインストール

以下はUbuntu 18.04.xの場合です。インストールするのにリポジトリーの追加は不要です。

sudo apt install nvidia-384 nvidia-cuda-toolkit

例えば18.04の場合はCUDA 9.1、19.10の場合はCUDA 10.1が外部リポジトリーの追加の必要なくインストールできます。

さらにNVIDIA Container Toolkitをインストールすると、LXCDockerコンテナーでNVIDIA GPUを利用できます。 NVIDIA CUDAを導入した環境を汚すことなくコンテナーでビルドしたり、ホストでビルド済みのバイナリーをCUDAがインストールされていないコンテナー上で動かせたり(実行例)と色々できて便利ですね。

LXCでGPUを使う方法については後述の手順で可能ですが、色々とハマりどころがあるので後日、ブログで取り上げたいと思います。

DockerでGPUを使った例

インストール方法はGitHub - NVIDIA Container Toolkitを参考にしました。

f:id:ytooyama:20200410122918p:plain

LXD + LXC 3.xでGPUを使った例

インストール方法はUbuntu Tutorial - GPU data processing inside LXD を参考にしました。

f:id:ytooyama:20200410123601p:plain

「4. Install the CUDA toolkit」の「sudo apt install cuda nvidia-cuda-toolkit」の部分は間違いなので、NVIDIAのリポジトリーのパッケージを使う場合は「sudo apt install cuda」、Ubuntuパッケージを使う場合は「sudo apt install nvidia-cuda-toolkit」を実行しましょう。この問題は報告済みです。

GPUリソースを追加したコンテナーから、コンテナー起動中であってもGPUリソースを取り外すことができるようです。

$ lxc config device remove cuda gpu 
Device gpu removed from cuda

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。