Sandra 2014その1(グラフ1~13)

SiSoftware
http://www.sisoftware.co.uk/

まずはこちらから。最初にCPU周りの性能を検証したいということでグラフ1がDhrystone、グラフ2とグラフ3がWhetstoneの結果である。Dhrystoneを見ると、特にNative(SSE4)のケースで38%ほど性能が向上しているのがわかる。動作周波数そのものはKaveriの方が10%近く低いから、これを勘案すると5割ほど性能が改善しているという計算もできる。

ただその一方でWhetstoneは順当に動作周波数通りのスコアで、Kaveriの方がやや低めに推移している。詳しくは後のレポートで説明するが、PiledriverとSteamrollerを比較すると、大きな違いはDecoderであって、Execution Unitそのものは変わらない。ということは、この性能の改善は専らDecoderの拡張によるものと考えられる。要するにPiledriverの世代では、DecoderがボトルネックになってExecution Unitが遊んでおり、これがSteamrollerで大幅に改善できた、という事に思える。

続いてグラフ4~6がProcessor-Multi-Mediaである。これはマンデンブロ図形の計算をInteger/Float/Doubleでそれぞれ行ったというものである。面白いのは、このケースでもNativeだとRichlandがやや高速なこと。ただ.NETではほぼ同等だし、JavaではむしろKaveriの方が圧倒的に高速である。このあたりは後述するメモリアクセス性能が効いているのではないかと思う。

次がScientific Analysis。これはSandra 2014から追加になったモジュールで、GEMM(General Matrix Multiplication)、FFT(Fast Fourier Transform)、N-Body(N-Body Simulation)の3つからなる。

GEMMはBLAS(基本的な線形演算)ライブラリの一部を成している汎用的な配列計算用のもので、科学技術計算では広く利用される。FFTはフーリエ変換を高速に行うもので、周波数成分の変換で多用されている。N-BodyはN体問題などと呼ばれ、広い範囲で利用されているが、今回は有限要素法をベースにしたシミュレーションを実施しているようだ。

ちなみにSandra 2014はこのScientific AnalysisのGPU用テストも実装されているのだが、なぜか実行できなかったので今回はCPUのみの結果を示す(Photo12)。

Photo12:"GP(GPU/CPU/APU) Scientific..."の脇に"Not compatible with your configuration"の文字が。これはKaveri/Richlandのどちらでも変わらなかった。現時点ではCUDA専用だろうか?

さて、結果はというといずれも浮動小数点演算をベースにすることもあって、Kaveriではやや分が悪い結果になった。こと浮動小数点演算に関していえばKaveriもRichlandもほとんど構成に差が無いため、動作周波数がそのまま反映される。

もっといえばKaveriの方は2つのデコーダからそれぞれFPU命令が渡される事になるので、ややオーバーヘッドが増えやすい。N-BodyでKaveriが動作周波数の比以上に数値が落ち込んでいるのはこのあたりも影響しているのかもしれない。

生の性能はこのあたりにして、次はProcessor Multi-Core Efficiency(グラフ10とグラフ11)。グラフ10がOverallで縦棒(左軸)がBandwidth、折れ線(右軸)がLatencyであるが、Latencyは微増程度で済んでいるのにBandwidthが大幅に増えているのがわかる。

グラフ11を見ると、L2までの範囲は若干Kaveriが上という程度だが(動作周波数の違いを考えるとこれもすごい)、4×1MB以上の範囲ではKaveriが倍近いBandwidthになっており、ここが大きな改善点であることがわかる。

ではMemory周りは? ということでグラフ12と13にまとめてみた。グラフ12はStreamの結果と、続くグラフ13における64MB~1GBのスコアの平均値をまとめたものだが、Richlandの倍近い帯域をKaveriは実現できている。

RichlandというかTrinity世代、さらにいえばその前のLlanoの頃からAMD製APUのボトルネックの1つはメモリアクセス性能の低さにあった。Kaveriでようやくこれが大幅に改善されたと考えて良さそうだ。

グラフ13はL1まで含めたRead AccessのBandwidthだが、Kaveriの方が動作周波数が10%低いにも関わらず、L1~L2の範囲ですら平均30%のBandwidth改善を示しているのは極めて印象的である。「どうして?」という謎解きは後編をお楽しみに。