概要
今流行りのdocker + nvidia container toolkit を用いてGPUの負荷テストが手軽にできないか検証しました。
ハードウェア構成
- Geforce
ソフトウェア構成
- OS : Ubuntu22.04.1LTS
- Nvidia Driver:525.85.05インストール済
dockerインストール
公式ドキュメントに従ってインストールします。
https://docs.docker.com/engine/install/ubuntu/
#repository追加
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
#鍵追加(と思われる)
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#追加したリポジトリからインストール
sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
インストールが終了したら、この時点で正常にdockerが起動できるか確認しておくと良いです。
#hello world
sudo docker run hello-world
NVIDIA-container-toolkit インストール
これも公式ドキュメントを参考にインストールします。
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/k8s/containers/cuda-sample
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt
#鍵追加
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
#リポジトリ追加
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
#追加したリポジトリからインストール
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
dockerでnbody実行
sudoで実行します。-numbodies=XXXXXXXX部分でメモリ使用量を調整します。
sudo docker run --rm -it nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -benchmark -numbodies=65536000
参考
https://www.idnet.co.jp/column/page_158.html
https://qiita.com/tkusumi/items/f275f0737fb5b261a868
複数GPUを搭載している場合のGPU指定方法(割と悩んだ)
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html
https://cocoinit23.com/docker-run-multi-gpu/
検証の経緯
GPUサーバに負荷を掛けて動作するかテストする際にCUDA toolkitのnbody(https://developer.nvidia.com/cuda-toolkit) を使っています。毎回環境を構築するのがめんどくさいので一度作った環境を色々なマシンに使いまわしていたのですが、しかし当然ながらテストするハードウェアの移り変わりや相性問題などは起こります。その都度、OSやドライバやらCUDAのバージョンを管理・更新するメンテナンスが発生していました。この方法であれば気軽に試せていまのところいい感じです。