Benchmark CIFAR10 on TensorFlow with ROCm on AMD GPUs vs CUDA9 and cuDNN7 on NVIDIA GPUs(JP)

Introduction

前回に続きCIFAR10のベンチマークを記述していきます。

前回までの記事

2018年3月7日 Benchmarks on MATRIX MULTIPLICATION | A comparison between AMD Vega and NVIDIA GeForce series
2018年3月20日 Benchmarks on MATRIX MULTIPLICATION | TitanV TensorCore (FP16=>FP32)


CIFAR10


Average examples pre second

計算指標

゙世界コンペティションやベンチマークでよく使用される CIFAR10 を TensorFlow の公式を使用し 、学習スピードを計測するものとしました。今回の記事は、”CIFAR10”のみ掲載します。

ベンチマークに使うプログラムはこちらを使用しました。
https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10

動作環境

For AMD(TF1.0.1):
Ubuntu 16.04.3 x64
HIP-TensorFlow 1.0.1
Python 2.7
Driver: ROCm 1.7

For AMD(TF1.3):
Ubuntu 16.04.4 x64
TensorFlow 1.3
Python 3.5
Driver: ROCm 1.7.137

For NVIDIA:
Ubuntu 16.04.4 x64
TensorFlow r1.6
Python 3.5
Driver: 390.30, CUDA9.0, cuDNN7

考察

前回取った行列演算のBenchmarkに近い結果が得られました。HIP-TensorFlow1.0.1を使った場合は奇怪な結果が取れており、1世代前のRX580がVega64に勝っているところから、明らかにAMD側の環境に問題がありましたが、新しいROCmと、TensorFlow1.3にバージョンが上がったところでスピードに関しては殆ど問題がなくなりました。

オーバークロック製品のサファイア製Nitro+のVega64がFrontierEditionより遅いのが気になりますが、メモリの使い方等に差異があるのかもしれません。何れにしても、大凡予測した理論値限界の速度が取れているので、非常に面白いベンチマークの結果になりました。

後日、新しいROCmのバージョンでPlaidMLのBenchmarkも取ってみたいと思います。

References


GPU EATER - AMD GPU-based Deep Learning Cloud