Sandra 2015 SP1b その1(グラフ93~128)

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

ということで、いよいよSandraでテストしてみる。ちなみに、先にGTA Vのところでメモリの認識がおかしいという話を書いたが、Sandraの場合もOpenCLでアクセスするときには"AMD Radeon R9 Series (3584SP 56C 1GHz, 4GB 500MHz 4096-bit)"と正しく認識されているのに、DirectComputeのCompute Shaderを使うと"AMD Radeon R9 Series (3584SP 56C 1GHz, 4GB 500MHz 8192-bit)"とかの表記になっていて、何かしらまだ問題があることが推察される。

さて、まずはGP Processingの結果(グラフ93~96)を。ここでのR9 Fury/Fury Xの数字は「素晴らしい」の一言に尽きる。OpenCLや(GeForce系の)CUDAよりもCompute Shaderが数字が挙がる傾向にあるが、対GeForce系列では圧倒的な差を示すし、R9 290Xとの比でも(先にBasemark CLのところで説明した)理論性能比に近い数字になっている。

ちょっと面白いのはDouble-Float(グラフ95)だけはR9 290Xが異様に高い数字を出していること。GeForce系が全滅なのは、これらがいずれも倍精度浮動小数点のハードウェアサポートを持っていないからなので、問題はこの倍精度の性能(特にOpenCL)がRadeon系列内で妙なことになっているという点だ。

またCompute Shaderでも、R9 FuryがR9 290Xに負けているというあたりはやはり何かしらおかしいことになる。ただし、こうした問題はQuad-Float(グラフ96)だと消え去るあたり原因が特定しにくい。

余談ながら、Quad-FloatともなるとRADEO系列でも対応するハードウェアを持ち合わせていないからソフトウェアで実行する形になるので、ある意味GeForce系列とRadeon系列が同一のラインに立っての勝負となるわけだが、ここで3~5倍の性能差があるあたりは、本質的にはRadeon系列がGPGPU的には優れている証拠の1つとしても良いと思う。

ここからは実際に近いアプリケーション例。まずはCryptgraphy(グラフ97~99)。AESのEncryption(グラフ97)とDecryption(グラフ98)は本質的にはほぼ同じであって、数字そのものはややDecryptionの方が大きいが、傾向は同じである。

このAESのEncryption/Decryptionに関しては昔からRadeon系列が強く、今回もそれははっきり見て取れるが、128bit/256bitのどちらにおいてもR9 Fury/Fury XがR9 290と比べて相応の性能の伸びが見られるというのは、ちょっと面白い。

一方、HasingはむしろGeForce系列の方が有利、というのも昔からある傾向であるが、例えばOpenCLの結果を見比べた場合、SHA1ではR9 290Xが最高速なのにSHA2-256だとR9 Furyが最高速、ところがSHA2-512だとほとんど性能差がないというところがそもそものR9 Fury/Fury Xの問題を如実に示していると思う。

グラフ100~105はFinancial Analysisである。意外にこの分野でもRadeon系列の健闘が目立っており、Single FloatのBlack-Scholes(グラフ100)、Binominal(グラフ102)では明らかにRadeon系列が有利、Monte Carlo(グラフ104)でもOpenCLはともかくCompute ShaderではRadeon系列が有利である。

さらにほとんどのケースでR9 290XとR9 Fury/Fury Xの性能差は理論比に近く、アプリケーションを選べばこうした高い性能が得られることが分かる。Doubleに関してはもう、Doubleを持たないGeForce系列が不利なのは明白であるが、それはともかくとしてDoubleの場合はR9 290XがR9 Fury X並みの性能を示すのも特徴的で、これは先ほどのグラフ95に通じるものがある。

グラフ106~111がScientific Testである。ことSGEMM(グラフ106)に関していえばGeForce系列もかなり高速なのは、ある意味最適化が十分に行われているというべきだろうか。またN-Body(グラフ110)も比較的拮抗しているが、意外にFFT(グラフ108)は振るわない結果になったのは面白い。

そしてこのSingle Floatでも、やはりR9 290XとR9 Fury/Fury Xの性能差は十分とはいいがたい。N-Body(グラフ110)が理論性能比に近いが、ほかはなにかしらR9 Fury/Fury XがStuckしているように見える。

一方Double Float(グラフ107,109,111)は、これまでよりもGeForce系列とRadeon系列の性能差が少ない。特にFFT(グラフ109)など、拮抗していると言っても良いほど性能が接近しているが、これはFFTの場合演算性能というよりもメモリ操作が主要なオペレーションになるから、というあたりもありそうだ。

グラフ112~114がVideo Shader Computeで、グラフ93~96の処理についてDirectX/OpenGLを使って行った結果となる。Half-FloatはOpenGLがサポートしていない関係で、グラフ112にSingle-FloatとHalf-Floatをまとめている。ここでは、性能に多少でこぼこはあるものの一応R9 FuryXが最高速だ。

ただその性能差はわずかで、構成を考えるともっと伸びても良いという気がする。Double-Float(グラフ113)は、DX10がDoubleをEmulateであつかっていることもありRadeon系列の有利さは消えている(それでもR9 Fury Xが最高速なのはさすがというべきか?)が、OpenGLはNativeなので、グラフ95の傾向が再現されている。

グラフ114はQuad-Floatで、これは全てEmulateということで、再び混戦気味である。それでもR9 Fury Xが最高速であり、このあたりだけ見ているとR9 Fury Xがゲームベンチマークで振るわないのが嘘のようである。

グラフ115とグラフ116はMemory Bandwidth比較である。ちょっと今回の製品の一覧をまとめて、それとこのグラフ115の結果を組み合わせてみたのが表2である。歴代の中で、R9 290Xが異様に高い効率を誇り、逆にR9 Fury Xが一番効率が悪いことが分かる。絶対的な性能はHBMが一番高い訳だが、それだけでは済ませられない何かがある様に思える。

転送速度
(Gbps)
バス幅
(bit)
理論帯域
(GB/s)
実行帯域
(DX10,GB/s)
実行帯域
(DX11,GB/s)
効率
(DX10)
効率
(DX11)
GTX 780 Ti 7 384 336.0 223.2 224.7 66.4% 66.9%
GTX 980 7 256 224.0 152.2 154.4 68.0% 68.8%
GTX 980 Ti 7 384 336.0 226.0 229.1 67.3% 68.2%
R9 290X 5 512 320.0 248.9 252.6 77.8% 78.9%
R9 Fury 1 4096 512.0 354.1 359.3 69.2% 70.2%
R9 Fury X 1 4096 512.0 344.0 346.7 67.2% 67.7%

一方のグラフ116を見るとなんというか、AMDはもう少し真面目にDevice→System(つまりGPUカード→本体メモリ)方向の転送性能を上げる工夫をしたほうが良い様に思う。それでもR9 290Xよりはだいぶマシにはなったが。