Sandra 2011 Engineer Edition(グラフ1~6)

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

これはゲームベンチマークではないが、Graphics Processor周りのテスト(Photo18)が充実してきたので最近は必ず実施することにしている。とはいえ、実はまだ互換性の問題が多く、例えばGPGPU CryptgraphyとかGPGPU Memory Bandwidthを実施するとCrossFireの環境では帰ってこなくなるとか、Media Transcodeは実際にやってみると結局CPUだけで処理しており意味が無いとか、割とベンチマークとしては厳しい。そんなこともあり、今回はVideo RenderingとVideo Memory Bandwidthのみを比較している。

Photo18: ちなみにToolsタブにある"Create Report"ウィザードを使うと、必要なテストをまとめて実施して、結果をテキストファイルで出力してくれるので、これを使っている。テストは3回実施し、平均値をグラフに示している。

グラフ1

グラフ2

グラフ3

グラフ4

さてまずグラフ1~4がVideo Renderingの結果である。1・2がFloat(単精度浮動小数点演算)、3・4がDouble(倍精度浮動小数点演算)の結果である。Doubleに関してはOpenGL以外の環境ではエミュレーション動作になるため、ガクンと性能が落ちるのはAPI側の問題であり、これは正常な振る舞いである。さて、実際にグラフ1・2を見て見ると、少なくともCPUの差はここではあまり感じられない。一方のGPU性能の方だが、Shaderの生の性能、という観点で言えばやはりRadeon HD 6970でもGeForce GTX 580には遠く及ばない様に見受けられる。もっともAPI次第、というのはOpenGLでの比較を見るとPhenom IIではかなりGeForce GTXのスコアが悪いのに、Core i7-2600Kではそれなりのスコアになっている、というのがいまいち理解しにくい部分だ。またCore i7-2600KにおけるGeForce GTX 580のスコアを見るとDirect3D 11 > Direct3D 10.1 > Direct3D 10 > Direct3D 9cという、ちょっと考えるとこれも何か変なスコアになっているのも気になる部分だ。

これがDoubleになると、EmulationということもあってかCrossFire構成の場合を除くと、おおむねどのケースも変わりなくなる。ちょっと注目したいのがDirectX 11の場合で、CrossFireの有無でスコアがほとんど変わらない、というあたりは明らかにドライバのチューニングが不足している気がする。そもそも表1から判るとおり、今現在においてもRadeon HD 6900シリーズはPreviewバージョンのドライバであり、まだドライバをチューニングする余地がまだあるのでは? という気がしてならない。ただ絶対的な性能という観点では、Radeon HD 5870が1600SP・850MHzでRadeon HD 6970が1536SP・880MHzだから単純計算すればほぼ同じ(SP数×動作周波数の単純な比で言えば、Radeon HD 6970はRadeon HD 5870の99.4%ほどになる)で、ただし内部構造の変更やRadeon HD 6800シリーズで見せた効率化などにより、1割程度の性能改善があると見てよさそう(これは1120SP・900MHzのRadeon HD 6800がRadeon HD 5870の2割落ち程度のレンダリング性能をたたき出していることからの推察)であり、そう考えるとグラフ1・2のスコアが(Direct3D 11におけるCrossFireを除くと)大きく上がるという可能性はそれほどなさそうではあるが。

一方グラフ3・4であるが、このケースでは意外にもRadeon系列は単体でGeForce GTX 580とほぼ互角である。特にOpenGLでのGeForce GTX 580のスコアはかなり問題があるが、これは同社としてはOpenGLはQuadro系列でちゃんとサポートするので、GeForce系列は動けばいい程度の扱いの可能性が高い。

グラフ5

グラフ6

次いでグラフ5・6はMemory Bandwidthである。この2つのみ、結果の桁が大幅に異なるため対数表示とさせていただいている。さて、まずInternal Memory、つまりGPU→オンボードのGDDRへのアクセスであるが、これはほぼスペックそのままといった結果になっている。理論値で比較すれば、

Radeon HD 5870 4.80GHz ×256bit≒153.6GB/sec
Radeon HD 6950 5.00GHz ×256bit=160.0GB/sec
Radeon HD 6970 5.50GHz ×256bit=176.0GB/sec
GeForce GTX 580 4.008GHz×384bit=192.4GB/sec

となる計算で、実際の数値と比較すると大体理論値の75~78%といったところ(ややGeForce GTX 580は効率が高かった)。なのでこれはまぁセオリー通りである。ちなみにCrossFire構成に関しては、加算すべきか平均を取るべきか悩んだのだが、一応今回は平均にしている。なので見方しだいではこれの倍の帯域となるわけだが、とりあえず今回はカード1枚あたりの性能という見方をしてほしい。面白いのはSystem to Device(CPU→GPU)とDevice to Memory(GPU→CPU)で、要するにPCIe経由でメインメモリとボード上のメモリの間の転送である。CrossFireのケースで大きく性能が落ちるのは、CrossFireではPCIe x8相当で通信するからである。これが物理的にPCIe x8レーンになるCore i7-2600Kはともかく、2×PCIe Gen2 x16レーンを実装しているAMD 890FXでも、CrossFire利用時はx8に帯域が狭まるという面白い結果になった訳だ。

さて、Phenom II(というかAMD 890FX)ではUp/Down共に5GB/sec程度(GeForce GTX 580のみ、System to Deviecがやや遅い)であるが、これをCore i7-2600Kにすると帯域が5.3~6GB/sec程度まで引きあがるというのは、これはチップセット側の問題と思われる。理論帯域は片方向あたり8GB/secだから、Core i7-2600Kの内蔵PCIeの方が効率が良い、ということだろう(もっとも構造を考えればこれも当然という気はするが)。