ViennaCL 1.7.1(グラフ31~34)
Institute for Microelectronics and Institute for ASC, TU Wien
http://viennacl.sourceforge.net/
独ウィーン工科大学のASC(Analysis und Scientific Computing)が開発して配布しているOpenCLのベンチマークを今回追加してみた。こちらはベンチそのものは簡単(ただしちょっと使いにくい)という利点もさることながら、ソースコードが公開されているので誰でも容易に検証できる点を評価した。
使い方だが、Downloadページからzipファイルを入手、任意のフォルダに展開後に、その中のViennaCLBench.exeを起動するだけである。
起動するとこんな画面になる(Photo61)ので、ここで左下の"Single/Double"(単精度/倍精度)を選び、"START"ボタンを押すだけで4種類のベンチマークが実行され、結果が表示される。
テストはBlasをベースにした密行列のベクトル積(Dense Matrix)とStreamベースのCopy、疎行列同士のベクトル積、ベクトルの積和算(Vector Operation)の4つである。各々のテストはそれぞれ複数のパラメータで実行し、その平均値をトータルで表示する仕組みだが、結果をログする機能と、個々のテスト結果を表示する機能がないのがちょっと不便ではある。
さて結果はそれぞれのテストを単精度(Float)と倍精度(Double)として表示しているが、Blas(グラフ21)の単精度のみNVIDIAの3製品が良いスコアを出すものの、あとはR9 390やRX 480と大きく違わない。
実際Vector Operation(グラフ34)ではGTX 1070とRX 480がほとんど変わらないスコアを出しているあたり、NVIDIA系の方で性能が出るプログラムが限られる印象をちょっと受ける。またRX 480よりもR9 390の方が良いスコアなケースが少なくないのも特徴である。CU数×動作周波数、という意味では
*40(CU)×1GHz : 36(CU)×1.2GHz=1:1.08
という比率で、しかも実際にはRX 480が15%性能改善していることを考えると1:1.242で2割ほど高速でも不思議ではない。差があるとすればメモリ帯域で、R9 390は512bit/6GHzで384GB/secである。RX 480の256GB/secは、R9 290の320GB/sec相当だとしても、2割ほどR9 390の方が帯域が広い計算になり、このあたりが性能差として響いているのかもしれない。とはいえ、グラフ34に見るR9 390とRX 480の差はかなり大きなもので、もう少し詳細を見てみたいところだ。