Sandra 2012 Engineer Edition(グラフ12~23)

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

色々と面白い結果が得られたのがこのSandraである。さてまずグラフ12・13がGP Processingである。今回はOpenCL及びDirectComputeに加えてCUDAもテストした(勿論Radeon HD 7970ではCUDAは動かないので、CUDAはGeForce系のみである)。グラフ12が単精度(Float)の結果で、相変わらずNVIDIAはOpenCLの対応が後手に回っている印象を受けるが、それにしてもGeForce GTX 680のスコアはGeForce GTX 580のダブルスコアとまではいかないまでも50~80%増しである。特にDirectComputeでは、Radeon HD 7970を上回るスコアが出ているのが判る。ところがグラフ13の倍精度(Double)の結果を見ると、Radeon HD 7970はおろか、GeForce GTX 580にすら劣るスコアでしかない。さてこれはどうしたものか?

ちょっと考察は後回しにして次のテストを見てみる。グラフ14・15はGP Cryptographyの結果である。OpenCLとDirectComputeのみでCUDAが無いのは、テストをやったところGeForce GTX 580/680共にエラーでテストが通らなかったためだ。OpenCLに関しては、GeForce GTX 580がやはりエラーで一切スコアが出ていない。

さて、結果を見ると性能差からいって、OpenCLのスコアはグラフ12のOpenCLのものに、DirectComputeの結果はグラフ13のDirectComputeのものに割と似た傾向になった。DirectComputeに関しては、AES256とSHA256で明確に傾向が異なっているが、いずれにせよRadeon HD 7970が圧勝でGeForce GTX 680はかなりギャップがある傾向がここでも再現された形だ。

もっとも、「んじゃドライバの最適化が進んでないだけでは?」とも言いにくい。グラフ16~18は、OpenCL/DirectCompute/CUDAを使ってのメモリアクセス性能であるが、勿論環境によって多少の差はあるものの、ことInternalに関しては概ね同程度のオーダーのメモリ帯域がどのGPU/APIでも実現されており、ここで明確な差は見出しにくい。ドライバの最適化が不十分だと、このあたりにも多少影響がありそうなもので、メモリアクセスが十分高速なのに演算は遅い、というケースは(皆無とは言えないが)考えにくい。なので、グラフ12~15は(今後のドライバの改善で多少変わるかもしれないとはいえ)基本的にはGeForce GTX 680の実力と考えても差し支えない気がする。

ついでに言うと、先ほどPhoto05ではGeForce GTX 680がPCIe Gen3対応と表記されていたが、スコアを見る限りどうみてもGen2として動いているとしか思えない。Radeon HD 7970が10~11GB/secと明らかにGen2の理論帯域を越えた数字を出していて、確かにGen3対応と理解できるのとは好対照である。

では今度はVideo Renderingの結果を見てみよう。グラフ19と20がやはり単精度(Float)と倍精度(Double)でのレンダリング性能である。単精度ではそれなりにGeForce GTX 680も頑張っているものの、Radeon HD 7970には及ばない程度である。OpenGLのスコアが異様に悪いのは、これは意図的なものである。NVIDIAはOpenGLへの最適化を真剣に行っているのはQuadroシリーズのみで、GeForceシリーズに関しては「動けばよし」とは言わないものの、明らかにQuadroシリーズとは違うレベルになっているからで、これはこれで仕方が無い。問題は倍精度で、Direct3D 11/OpenGLとDirect3D 9.3~Direct3D 10.1では全く違う結果になっている。これは、Direct3D 11/OpenGLはAPIレベルできちんと倍精度演算を扱えるのに対し、Direct3D 9.3~Direct3D 10.1ではこれが扱えないため、単精度演算を使って倍精度をEmulationしていることに起因する。なので、Direct3D 9.3~Direct3D 10.1はグラフ19の相似形になっているわけだ。さて、そんなわけで倍精度をまともにやると、やはりここでもGeForce GTX 680の低い性能が明らかになった。なにせGeForce GTX 580より遅いのだから。APIはDirect3D 11だから、OpenCLの時に述べた「最適化が進んでいない可能性もある」はさすがに通用しにくい。

最後がDirect 3Dを使ったメモリ帯域(グラフ21~23)である。APIが異なってもおおむね結果は同じであった。ただRadeon HD 7970に関して言えば、System to Device(CPUからGPUへの転送)は9GB/sec超えで、これはPCIe Gen3が正しく動いている事になるが、Device to System(GPUからCPUへの転送)が6GB/sec未満というのはちょっと解せないところではある。もっともDirect 3Dでは本来こうした動作はあまり考慮していないので、何かしらボトルネックがあるのかもしれない。