Sandra 2013 SP6(グラフ96~116)

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

ここからはGPGPU的なテストをいくつか。まずはSandra 2013を。いつものEngineering EditionはまだSP5なのに、既に無償版でSP6がリリースされていたので、今回はこちらを利用した。

さてまずはFloatとDoubleのGPU Processing(グラフ96~97)で、これはGPUを使ってのマンデンブロ図形描画の計算である。こういう用途ではコンスタントにRadeon系列が有利で、明確な性能差が出ている。GeForceは、ことFloatに関する限りCUDAでもそれほど性能が出ず、Doubleでやっと最高速。またOpenCLでの効率があまりよくないのも変わらないといったところ。

次はGPU Cryptography(グラフ98~104)である。これはもともとAESのEncryptionとDecryption、それとSHAを使ったHasingの性能を比較するものだが、テストでは

  • Standard(AES-128 Encryption+AES-128 Decryption+SHA-1 Hasing)
  • High(AES-256 Encryption+AES-256 Decryption+SHA2-256 Hasing)
  • Higher(AES-256 Encryption+AES-256 Decryption+SHA2-512 Hasing)

の3つのパターンで比較している。そこでこれをテスト別に7種類に分けて示しなおした。

まずAES Encryption(グラフ98~99)であるが、なぜかGTX 780ではCompute Shaderがエラーで動作しないのでこれは省いている。結果はご覧の通り。一応GeForce系ではCUDAが最速だが、それでもRadeon系列には遠く及ばない。そのRadeon系ではR9 290Xは、AES128で20%強、AES256では50%前後の性能改善がHD 7970比で実現しており、かなり性能の改善が見られる。

これはAES Decryption(グラフ100~101)でも同じで、やはりR9 290XはHD 7970よりもそれなりの性能改善を示しており、かつGeForce系には大差をつけている。

少しだけ様相が変わるのはHasing(グラフ102~104)で、SHA-1(グラフ102)だとGTX 780が非常に高い結果になっている。ただOpenCLだとそれほどでもないスコアである。別にこれがフロックではない、というのはSHA2-256(グラフ103)でも同じ傾向がみえるからで、ただ今度はRadeon系列の方が高速になっている。SHA2-512(グラフ104)では? というと、GTX 780では肝心のCUDAが動作しなかったりするのだが、その分OpenCLではRadeon系列を上回る良いスコアを出しているあたりがいろいろと謎である(ちなみにCompute Shaderでは全構成で動作しなかった)。

AESに関しては広く利用されている事もあって専用アクセラレータを搭載しているものも多いくらいだから、GPUへの最適化も進んでいるようでそれなりに動作するが、特にSHA2を使ったHashingではまだ最適化以前のレベルにある、ということが伺える結果になった。

次はFinancial Analysis(グラフ105~110)。これはBlack-Scholes/Monte Calro/Binominalの3種類の技法を使ってPricingを計算するもので、それをFP32/FP64でそれぞれ行った場合の性能を測定している。

まずBlac-Scholes(グラフ105~106)であるが、FP32に関してはかなりGTX 780がR9 290Xに肉薄している。またHD 7970とGTX 770は、OpenCLとCompute SHaderで見事にスコアがひっくり返っているのも面白いところ。

それはともかくFP64では? というと、やはりハードウェアでFP64を処理できるRadeon系列が有利である。ただ先ほどのCryptographyでもその傾向が見えたが、利用するAPIによって性能がころっとひっくり返る事が珍しくないのも特徴で、このあたりはまだ「なんでもOpenGLにしとけばいい」とか言えるほどに成熟されていない感じである。

Monte Carlo(グラフ107~108)は処理が重い(何しろ数打ちゃあたる的なシミュレーションだからだ)こともあって結果は4桁低い(GOPT/sec→MOPT/sec)が、あまりAPIによるばらつきもなく、R9 290Xが有利の結果は変わらない。ただ、なんでFP64だとR9 290XよりもHD 7970の方が高速なのか、に関しては今一歩理解ができにくいところだ。またFP64だとGeForce系列の成績の低迷ぶりも顕著と言って良いだろう。

最後がさらに負荷の高いBinominal(グラフ109~110)で、FP32だとR9 290Xが圧倒的な性能の高さだが、FP64だとHD 7970との差が縮まっているのはちょっと興味深い。GeForce系列との差はかなり大きく、これに関してはR9 290Xの圧勝としてよさそうだ。

ここからはメモリ周り。まずはGPGPUを使ってのMemory Bandwidth。グラフ111はInternal Memory(つまりオンボードのGDDR)へのアクセス性能で、これはMemory Bandwidthがそのまんまという感じだが、ここではやはり512bit Busを搭載したR9 290Xが最高速、次が384bitながら6GbpsのGDDR5を積んだGTX 780となり、以後HD 7970、GTX 770と続くわけでこれは非常に順当な結果といえる。

順当ではないのが次のExternal(グラフ112)、つまりCPU側とのデータ交換である。先に言えばGeForce系列は優秀で、System to Device(CPU→GPU)とDevice to System(GPU→CPU)の帯域がほぼ変わらず、また理論帯域(16GB/sec)の50%以上という高い効率を誇るが、Radeon系列はとにかくDevice to Systemが異様に遅いのが特徴で、それは今回もHD 7970の結果から見て取れる。

で、R9 290Xはどうかというと、これに関して大分改善した模様だ。といっても、まだGeForce系列には遠く及ばないので、まだまだ改善の余地はあるように見えるが、それでも改善されただけマシと考えてよいだろう。

グラフ113とグラフ114はDirectX/OpenGLを使ってのGPGPU的なメモリアクセスの性能。なぜか今回Radeon系列はOpenGLのテストがエラーで通らなかったので、ここでは省いている。

結果をみると、こうした使い方はRadeon系が有利で、実際結果もR9 290Xがぶっちぎりである。例外は唯一、Emulated Double(グラフ114)におけるDirectX 11の結果で、何でかHD 7970が突出した結果になっている。複数回のテストでいずれも同じ結果なので、あるとすれば何かSandraの内部でミスっている可能性はなくもないが、これを除くとおおむね妥当というか、Native Float(グラフ113)と同じ傾向を示している。

最後が、DX10/11を使っての純粋なメモリアクセスである。グラフ115がInternalであるが、先のグラフ111と比較すると若干ながら数字が増えているあたり、やっぱりまだDirectXでアクセスするのが一番効率がよい、というのは分かりやすい。

絶対値という意味ではもちろんR9 290Xが優秀であるが、効率も高い。R9 290Xが理論帯域320GB/secに対して250GB/secあまりの結果だから、効率はおおよそ78%ほど。対してGTX 780は理論帯域288GB/secに対して170GB/sec程度だから、効率は60%ほどになる。このあたりは、随分R9 290Xは頑張った、という印象を強く感じる。

ただその一方、CPUとのデータ交換(グラフ116)は、グラフ112とほぼ同じ傾向である。HD 7970に比べると大分改善してはいるが、もう少し頑張ってほしいところだ。

次のページ:ベンチマーク結果「DirectCompute&OpenCL Benchmark v0.45b」