📚

DockerをつかったGPUベンチマーク

2023/02/18に公開
  • Dockerコンテナ内でもGPUが使えているか?
  • どの程度のGPUスコアなのか?(シングル、マルチ)

が確認できる

ベンチマーク方法

Dockerコンテナのcuda-sample:nbodyを使ってGPUに負荷をかけて計測できる。-numbodiesに256の倍数を指定すると、計算時間が増える。

シングルGPUの場合

docker run --rm --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark -numbodies=640000

マルチGPUの場合は、-numdevices=<n>で使用するGPUの数を指定できる

docker run --rm --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark -numbodies=640000 -numdevices=4

3機種でテストした結果

Razer Blade15(2019) AMD Ryzen 7 3700X DGX DGX
GPU RTX 2060 6GB RTX3070 8GB Tesla V100-DGXS 16GB Tesla V100-DGXS 16GB
architecture Turing7.5 Ampere8.6 Volta7.0 Volta7.0
num of devices 1 1 1 4
numbodies 640000 640000 640000 640000
time(10iterations)[ms] 21123.5 7012.6 7988.6 2764.8
billion interactions per second 193.9 584.0 512.7 1481.4
single-precision GFLOP/s 3878.1 11681.7 10254.5 29629.1
rate x1.0 x3.0 x2.7 x7.6

単体GPUだとRTX3070が少しだけTesla V100を超えている。RTX2060とRTX3070でシリーズ格差と1世代古い機種もあって3倍ほどの性能さがある。

DGXは4基のGPUがあるので、全部使うとシングルと比較して3倍弱の性能になっていた。4倍じゃないのか?ってのはやること次第だと思う。

以下ログ

Razer Blade15(2019) NVIDIA RTX2060

GPU Device 0: "Turing" with compute capability 7.5

> Compute 7.5 CUDA device: [NVIDIA GeForce RTX 2060]
number of bodies = 640000
640000 bodies, total time for 10 iterations: 21123.588 ms
= 193.906 billion interactions per second
= 3878.129 single-precision GFLOP/s at 20 flops per interaction

AMD Ryzen 7 3700X (8Cores) + NVIDIA RTX3070(8GB)

GPU Device 0: "Ampere" with compute capability 8.6

> Compute 8.6 CUDA device: [NVIDIA GeForce RTX 3070]
number of bodies = 640000
640000 bodies, total time for 10 iterations: 7012.648 ms
= 584.087 billion interactions per second
= 11681.750 single-precision GFLOP/s at 20 flops per interaction

DGX V100 16GB x 4

GPU * 1

GPU Device 0: "Volta" with compute capability 7.0

> Compute 7.0 CUDA device: [Tesla V100-DGXS-16GB]
number of bodies = 640000
640000 bodies, total time for 10 iterations: 7988.672 ms
= 512.726 billion interactions per second
= 10254.520 single-precision GFLOP/s at 20 flops per interaction

GPU * 4

GPU Device 0: "Volta" with compute capability 7.0

> Compute 7.0 CUDA device: [Tesla V100-DGXS-16GB]
> Compute 7.0 CUDA device: [Tesla V100-DGXS-16GB]
> Compute 7.0 CUDA device: [Tesla V100-DGXS-16GB]
> Compute 7.0 CUDA device: [Tesla V100-DGXS-16GB]
number of bodies = 640000
640000 bodies, total time for 10 iterations: 2764.846 ms
= 1481.457 billion interactions per second
= 29629.135 single-precision GFLOP/s at 20 flops per interaction

Discussion