ということで、以下ベンチマークである。今回はGPUのテストということもあり、3D系をメインとしたものに絞らせていただいた。

Sandra 2010 Engineer Edition(グラフ1~5)

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

いきなりSandraかよ! と言われてしまいそうだが、これに含まれるVideo/GPU Benchmark系は他に適切なものもないので、確認しておくべきであろう。まずはVideo Renderingである(グラフ1・2)。グラフ1が単精度、グラフ2が倍精度でそれぞれレンダリングを行うテストで、やっていることは相変わらずマンデルブロ図形の描画(そういえばマンデルブロ博士が今月14日に亡くなられたとか。謹んでお悔やみ申し上げます)である。どちらもDirect3D 9/10/10.1/11とOpenGLをつかってそれぞれレンダリングを掛けるわけで、これはほぼシェーダーの生の性能ということになる。

どちらのテストでも、

5770 < 6850 < 6870 < 5870

というスコアに差が無いし、シェーダーの動作速度と数を考えればほぼ妥当なスコアであるが、唯一謎なのがOpenGL NativeにおけるRadeon HD 5870の突出振りである。どうも、5870以外は何れもEmulated Double Precisionで動作しているのではないか? という気がする。最初はドライバの問題か、と思ったが過去のCatalystでも似た様な結果になっていたので、仮にドライバだとしても、かなり前からこの問題はあるようだ。逆にこれを除くと、概ねグラフ1とグラフ2は同傾向にあるといってよい。

次にグラフ3だが、結果が2桁異なるので、やむをえず横軸を対数させていただいた。さて、ここでも概ね結果は同じである。理論値で言えば、

Radeon HD 5770: 800sp×850MHz=680M(sp・MHz)
Radeon HD 6850: 960sp×775MHz=744M(sp・MHz)
Radeon HD 6870: 1120sp×900MHz=1,008M(sp・MHz)
Radeon HD 5870: 1600sp×850MHz=1,360M(sp・MHz)

という計算になり、比率としてはラフに、

5770:6850:6870:5870 = 1:1.1:1.5:2.0

というあたりになる。実際の結果は? というと、

1:1.6:1.9:2.2(Float)
1:1.4:1.6:2.0(Emulated Double)

で、6850/6870はセオリーよりやや性能が良いが、これが様々な効率改善による効果だと考えれば納得がいく。

グラフ4はStreamでの性能であるが、またもやRadeon HD 5870のみ、それもDoubleで突出しているというのは、明示的にドライバが何かやっているように見える。ここからは完全に推測だが、Radeon HD 5870コアはFireGL系列にも流用されるから、この場合はちゃんとDoubleをDoubleとして取り扱う(というか、ドライバがAPIに対しDouble PrecisionがHandleできるとレポートする)のに対し、5770とか6800シリーズはFire GLに流用の予定がないのでDouble Precisionを扱えないとドライバがレポートする、といった動き方をするように見える結果であった。

最後がメモリ帯域(グラフ5)であるが、こちらも結果が2桁異なるので、対数グラフでまとめさせていただいた。テストそのものは複数(Direct3D 10/10.1/11とStream)で行っているが、どのテストでも似た傾向が出たので平均値をグラフ5にまとめてみた。やはりメモリバス幅が128bitのRadeon HD 5770が遅いのは仕方ないとして、あとは概ね同等レベルである(厳密に言えばメモリの速度が4GHzの6850、4.2GHzの6870よりも4.8GHzの5870の方が高速であり、これがそのまま結果にも出ているが)。興味深いのはDevice to Systemのテストで、要するにPCIeを経由してGPU→Memoryの転送であるが、これが微妙に遅くなっている事だ。一番遅いのがRadeon HD 6870というのはどんな理由なのか、不思議ではある。