Sandra 2012 Engineer Edition(グラフ11~15)
SiSoftware
http://www.sisoftware.co.uk/
SandraのGPU関係ベンチマークを行った結果をまとめて紹介したい。まずグラフ11はGP(GPU/CPU/APU Benchmark)の結果である。これはCPU/GPU/両方を使い、マンデンブロ図形を計算・描画するというものだが、複数のAPI(OpenCL/CUDA/DirectCompute)に対応しているという触れ込みである。また結果は描画速度(GPixel/sec)と、計算速度(GFlops)の両方で示されるので、今回は計算速度の方をまとめてみた。
さて問題はGeForce GTX 580の方で、OpenCLで呼び出すと"GP call failed. Try another interface (e.g. OpenCL/ComputeShader/CUDA/etc.) or update video drivers."だの"Out Of Memory:Use a larger page file or install more memory. The page file usage is over 90%."だのといったエラーを連発してまともに動作しない。それどころかCUDAで呼び出した時にもこのエラーが出たりするなど、なかなかGeForce GTX 580には厳しい環境となった。Radeonの方はそういうこともなく、OpenCLを使いCPU/GPU/CPU+GPUの各環境での結果がちゃんと出ている。そんな訳で、GeForce GTX 580についてはCompute Shaderのみ、RadeonはOpenCLとCompute Shaderの両方の結果を示している。
さて結果はもうみて明らかという感じである。処理によって多少差があるものの、Radeon HD 7970の演算性能はRadeon HD 6970の性能を50~100%上回っている。
これはAES256 Encryption/DecryptionとSHA256 Hashingを行わせたグラフ12では更に顕著となる。OpenCLよりもCompute Shaderの方が高速というのもちょっと面白いが、それにしてもAES256のEncryption/DecryptionではRadeon HD 7970がRadeon HD 6970の5倍以上高速で、GeForce GTX 580と比較すると10倍以上という驚異的な差になっている。SHA256のHasingではここまでの差はつかないが、それでもRadeon HD 6970のほぼ倍、GeForce GTX 580の8割増しだから、十分に高速と言って良いと思う。
この理由の一つは、Memory周りのAPIの改善ではないか? と思う。グラフ13はMemory Bandwidthの結果である(これとグラフ15のみ、横軸を対数にしているので注意)。Internal Memory、つまりGPUからボード上のメモリにアクセスする速度が、OpenCLの場合Radeon HD 6970では12GB/sec程度でしかない。これは明らかにおかしいというか、PCIeのルートコンプレックス経由で通信してるんじゃないのか? と思わせるほどに遅い。メモリそのもののアクセス性能が悪くないのはCompute Shaderを使った場合のInternal Memoryのアクセス速度はそう悪くないことからも明らかで、これはCatalyst 11.12に含まれるRadeon HD 6900向けのOpenCLのドライバの問題ではないかと考えられる。Radeon HD 7970ではそうした問題がないので、Compute Shaderの場合とほぼ同等の性能となっている事からもこれが伺える。
それはそれとして、やはりメモリバス幅を384bitに増やした事の効果は明らかである。Compute Shaderの結果を見ると、Radeon HD 6970が138GB/sec程度なのにRadeon HD 7970では201GB/secと、ほぼ5割近い帯域アップが実現している。GeForce GTX 580は156GB/sec程度だが、メモリクロックは4.008GHz(Radeon HD 6970/7970は5.5GHz)だから、同じ程度までメモリクロックを引き上げれば同程度まで帯域は増えることになる。恐らくNVIDIAの次世代製品はこのあたりまで引き上げてくるのだろう。
グラフ14はグラフ12と同じテストを、今度はDirect 3Dで行った結果である。こちらも結果はGPixel/sとGFlopsの両方で示されたので、GFlopsの方で示している。こちらだと、その性能の高さは更に明らかである。勿論シェーダの数が大幅に増えている事は大きな要因にしても、Float演算での結果がここまで大きく違うのはやはりVILW構造をGCNに切り替えた事が大きいのかもしれない。最後のグラフ15はやはりDirect 3Dでメモリ帯域のベンチマークを行った結果である。これはまぁセオリー通りというべきか。