- リンクを取得
- ×
- メール
- 他のアプリ
Windows では動作させられなかった OpenCV with CUDA ですが、Docker で CUDA を使えることを思い出したので、Docker で試してみました。
cmake のオプションは、このようにスクリプトにして記述しました。オプションや環境変数を特段修正しなくても、CUDA、cuDNN、python が認識されています。
なお、WSL2、Docker、NVIDIA Container Toolkit は導入済みです。
コンテナの用意
NGC のサイトで、用途にあいそうなコンテナを探します。今回は PyTorch などのバージョンも考慮して、CUDA 11.7 を使用したいと思うので、「nvidia/cuda:11.7.1-cudnn8-devel-ubuntu22.04」を選びます。
WSL の Ubuntu で、以下コマンドを実行してイメージを取得します。
docker pull nvidia/cuda:11.7.1-cudnn8-devel-ubuntu22.04
イメージの取得が終わったら、以下コマンドを実行してコンテナを起動します。
docker run -p 12200:22 --gpus all -it --name=opencv nvidia/cuda:11.7.1-cudnn8-devel-ubuntu22.04 bash
※別途 SSH ができるように、ポート転送の設定を追加しています。
これで、CUDA などがインストール済みの Ubuntu が起動しました。念のため、コンテナ内で nvidia-smi コマンドを実行して、GPU が認識されていることを確認します。
コンテナ内で OpenCV のビルド
ほぼ以下のサイトに沿って実行しました。
cmake、python のインストール (gcc などはコンテナイメージに含まれていました)
libpng-dev などcmake のオプションは、このようにスクリプトにして記述しました。オプションや環境変数を特段修正しなくても、CUDA、cuDNN、python が認識されています。
ビルドし、問題なく完了しました。所要時間も、Windows 上で実施した場合とそんなに差はなく、2時間程度かかったように感じます。
インストールし、python から cv2.cuda.printCudaDeviceInfo(0) を実行してみると・・・無事、CUDA が利用できそうです。コンテナ内からハードウェアを叩くほうが簡単にできるとは、思いもよりませんでしたね・・・
コメント
コメントを投稿