とりあえずcudaが使いたい人のためのQiita


Dockerを使いましょう

Docker知らないからってこのページを閉じようとしたあなた。多分想像以上に環境構築簡単なのでご安心を。Dockerさえ入ってしまえばLinuxのOSやversionが関係ないのがDockerの強みです。

背景

私事ながら、Geforce RTX3090を手に入れたのですが、今までのcudaの導入方法だと一向に認識されず、1週間溶かしまして絶望していたのですが、Dockerを使えば一瞬でしたので同じように悩んでる人に向けてそれを共有したいと思いました。

環境

  • Ubuntu 18.04(GPUが接続されているLinuxならDockerさえ入ればなんでもいい)

やり方

1. Dockerのインストール

たくさんの記事があるので割愛。
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ja
などを参照。

2. 使いたいDocker imageを探す

Docker hubで使いたいDockerイメージを探します。色々ありますがとりあえずcudaが使いたい人はnvidia/cudaの最新のものにしましょう。base, runtime, develとありますが、特にこだわりがなければdevelを選択するのが良いでしょう。(develにしかないコマンドがある)

base: 事前ビルドされたCUDAアプリケーションを展開するための最小構成のイメージ。CUDA Toolkit 9.0以降のみ。
runtime: CUDA toolkitから全ての共有ライブラリを追加したCUDA実行用のイメージ。
devel: 共有ライブラリだけでなくコンパイラーチェーン、デバッグ用ツール、スタティックライブラリなどが追加されたCUDA開発用のイメージ。
https://www.atmarkit.co.jp/ait/articles/1804/18/news141_3.html

以下で用いるDockerイメージはnvidia/cuda:11.2.0-runtime-ubuntu20.04とします。
(ちなみにコロンの前のnvidia/cudaREPOSITORY, コロンの後の11.2.0-runtime-ubuntu20.04TAGといいます)

3. Docker pull

個人的にはGitでいうgit cloneという理解をしています。使いたいDockerイメージをローカルに作成します。今回はnvidia/cuda:11.2.0-runtime-ubuntu20.04を用いるので、


docker pull nvidia/cuda::11.2.0-runtime-ubuntu20.04

となります。docker pullは時間がかかるので気長に待ちましょう。

4. コンテナを生成、起動

dockerイメージのコピーであるコンテナを生成し、その中に入っちゃいます。

docker run -it nvidia/cuda::11.2.0-runtime-ubuntu20.04

すると、謎の場所に連れて行かれると思います

[root@4ae03cb199f4 /]#

これで起動成功です。ここはcudaの入ったubuntu20.04の世界になっています。

あとはこの中でいつも通り環境を構築していきましょう。(僕はanacondaを入れました)もし何か失敗してしまってもコンテナを消してまた1から作ればOKです。ホストOSが汚染されることはありません。

Dockerの使い方について

ちなみに上の方法をそのままやったところでろホストOSのディレクトリは覗けませんし、ipアドレスが繋がってないのでサーバーを立てることもできません。ここからどうカスタマイズしていくかは使う人にかかってきます。ぜひ色々と調べてみてください。(私も絶賛Docker勉強中であります)
例えばanacondaを使うなら、-vで接続するディレクトリを決めて-pでポート番号を指定したりするとコンテナ内の環境でホストのファイルの操作ができるようになります。

参考