Sandra 2014その2(グラフ14~32)

続いてもSandra 2014による検証となる。何で「その1」と「その2」に分けたのか? というと、AMDではKaveriについて、CPU単体ではなくAPUとしての性能を強くアピールしたい意向なので、これを汲んでGPU周りのテストを分割した。単にグラフの数が多かったので分けた方が読みやすい、という話もなくはないが(笑)。

さて、グラフ14とグラフ15はOpenCLおよびDirectComputeを使ってのマンデンブロ図形描画の結果である。やってることはグラフ5やグラフ6と変わらないのだが、CPUだとFloatで100MPixel/sec程度、Doubleで50MPixel/sec程度なのが、GPUを使うとFloatで1GPixel/sec弱、Doubleでもそれなりの性能になることがわかる。DirectComputeでDoubleの結果が低いのは、DirectComputeだとDoubleをNativeで扱えないので、Emulation動作になる関係である。

それはさておき、ここではKaveriがRichlandと比べて2割増程度のスコアを収めている(OpenCLのDoubleだと4倍近い!)。定格動作周波数だとA10-6800KはGPUが844MHz、対してA10-7850Kは720MHzとこちらも17%ほど動作周波数は低いのだが、シェーダの数はA10-6800Kが384基、対してA10-7850Kは512基であり、しかもアーキテクチャがより進んだGCNだから、もう少し差があってもよさそうな気はするが、これはアプリケーションにもよるのかもしれない。

ではほかのアプリケーションでは? ということで、まずはCryptography(グラフ16~22)。これはAES暗号化/AES復号化/SHAによるハッシュの3種類の計算(実際はAESは2種類、SHAは3種類なので合計7種類)を、

  • CPUでSSE命令などを使って実施
  • OpenCL経由でCPUを利用して実施
  • OpenCL経由でGPUを利用して実施
  • DirectCompute経由でGPUを利用して実施
  • OpenCL経由でCPU+GPUを利用して実施

の5パターンで実施したものだ。

さて結果を見ると、大体以下のような共通した傾向を見て取れる

  • OpenCLとDirectComputeのどちらが高速か、は内容によって異なるが、どちらにしてもGPUを単体で使うとCPU単体に比べても非常に高速で、Richland比で2倍以上の性能になることも珍しくない。
  • CPU+GPUの構成では、むしろ性能が下がる。やはりCPUが足を引っ張る形になるようで、その意味ではまだCPUとGPUの処理のオフローディングはうまく行っていない。
  • CPUをOpenCL経由で利用すると、当然といえば当然だが性能が落ちる。

またAESの暗号化/復号化に関してはCPUのAES命令などを使う事で効率よく処理ができているが、SHAのHash処理はこれがうまくないようで、特にSHA2-512だと非常に性能が落ちている。

唯一このSHA2-512ではRichlandの方がKaveriより高速、というあたりは、512bitもの長さのデータをハンドリングしようとすると現在のGCNではうまくいかないということかもしれない。またDirectComputeではこのSHA2-512が扱えなかった。

続いて金融関係ということでグラフ23~27がそれぞれBlack-scholes(ブラック・ショールズ方程式)/Binominal Euro Option(二項価格評価モデル)/Monte Carlo Euro Option(モンテカルロ法)の3種類の価格決定モデルを、それぞれFloatとDoubleで実施した場合の結果である。

こちらも5パターンで実施しているが、こちらはもっと極端で、

  • どのモデルでも、Floatの場合はGPUを使う事で極端に高速化される。Doubleの場合は多少性能差が縮まるが、それでも圧倒的な差である。
  • どのケースでもKaveriのGPU性能はRichlandと比較して十分に高速。
  • CPUとGPUを併用すると性能が落ちるのはここでも変わらず。

というあたりだろうか。ちなみにRichlandでDirectComputeを使うと、Monte Carloの 一部ではテストが実行できなかった。

次にもうすこしGPU単体の性能を、ということでグラフ28~30がMemory Accessの性能である。ここではCPU単体は抜いて、OpenCLもしくはDirectCompute経由でのテストとなっている。

結果をみると、Internal/System to Device(CPU→GPU)/Device to System(GPU→CPU)のどのケースでも、KaveriはRichlandの倍以上の性能になっている。とはいえ、これはそもそものメモリ性能がKaveriで非常に高いためではないかという気がする。

あと面白いのは、ここではCPU+GPUのスコアが最高な事。純粋にメモリアクセスだけであれば、CPUとGPUでそれほどぶつからないためにオーバーヘッドが少なくて済むということかもしれない。

最後にDirectXを使ってのマンデンブロ図形描画をFloat/Doubleで行ったのがグラフ31とグラフ32である。こちらでも平均してRichlandの2倍以上の性能をKaveriがたたき出している。筆者の実感としては、このあたりが一番実際の性能に近いのではないかと思う。