📚
DockerをつかったGPUベンチマーク
- 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