Sandra 2013 Engineer Edition(グラフ117~129)

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

ここからはGPGPU的なベンチマークを試してみる。まずはその前にちょっとDouble Precisionの話を。

GeForce GTX 680の考察でも述べたとおり、従来のShaderはSingle Precision対応で、Double Precisionはソフトウェア実装である。

GK110ではこれをハードウェアで実装したのだが、標準状態だとこれが有効化されない。この設定、NVIDIA Control PanelのManage 3D Settingsの中にある(Photo65)ので、これを有効にする(Photo66)ことでDouble Precisionにハードウェア的に対応する(Photo54)。

Photo65:ここではCUDAとなっているが、OpenCLやDirectComputeでも振る舞いが変わった。まぁここで言うCUDAはAPI名としてのCUDAではないのだろう。

Photo65:設定にGeForce GTX TITANを入れるとDouble Precisionが有効になる。

ということで、ここからのGPGPUテストは、TITANに関してのみ標準状態(つまりDouble Precision未対応)とDouble Precision対応の両方で行った。グラフで、GTX Titanとあるのは標準状態、GTX Titan DoubleというのがDouble Precision対応の状態である。

さてまずはOpenCL/DirectX Compute Shader/CUDAを使ってのGPGPU Processing。グラフ117がSingle Precision、グラフ118がDouble Precisionである。

相変わらず性能にムラがあるというか、AMDはOpenCLに注力、NVIDIAはOpenCLはそこそこ程度でComputeShaderとCUDAに注力という感じが見て取れるが、注目のTITANは? というと、やはりDouble PrecisionをEnableにするとややSingle Precision性能が落ちるのがグラフ117で判るが、GTX 680と比較して平均で30~50%の性能アップが実現されており、これは悪くない数字に思える。

もっと極端なのがDouble Precision(グラフ118)で、Radeon HD 7970を完全に上回る性能をたたき出しており、このあたりはスペック通りの数字と言える。もっともDouble PrecisionをEnableにしないと、SLIよりやや低い程度の性能しかないあたりは面白いが。

ではVideo Processingは? ということでまずグラフ119がFloatだが、ここではほぼRadeon HD 7970に並ぶ性能に達している。もともとメモリバスがRadeon HD 7970は384bit/5.5GHzで264GB/sec相当、GeForce GTXは256bit/6GHzで192GB/sec相当とややビハインドがあったが、TITANでは384bit/6GHzで288GB/sec相当まで帯域を増やしたから、同等であってしかるべきではあるのだが。

ただFloatではややHD 7970に及ばない程度に留まっているが、Double(グラフ120)になると僅かとは言いながら逆転しており、このあたりはメモリ帯域がそのまま反映された形に見える。

次は暗号化関係で、GPGPUでAES Encryption/AES Decryption/SHA-256 Hasingを行った結果をグラフ121~123に示す。

実はSLIの動作が結構不安定で、なぜかCompute Shaderが3回おこなったうちの1回しか動かないとか、CUDAが全滅するとか色々不思議なのだが、β版ドライバということでこれは深くは追求しないことにした。

相変わらずOpenCLではRadeon系が圧倒的な性能であるが、Compute Shaderではそれなりの性能差になっているし、CUDAの性能もそう悪くない。ちなみにこれらのグラフでCompute ShaderとCompute Shader MSの2種類があるのは、ベンダのCompute Shader用ドライバを使うか、MicrosoftのBasic Render Driverを使うかの違いである。

残念ながらここでは余りDouble Precisionの効用は無いが、それでもTITANの性能は(OpenCLを除き)かなりRadeon系列に肉薄している事が見て取れる。

グラフ124~126は、GPGPU的に使ったMemory Bandwidthである。まずInternal(グラフ124)に関しては、GeForce系は特にCompute Shaderでうまく内部のキャッシュにHitしているようで、本来のメモリ帯域以上の数値が出ているが、Radeon系はキャッシュだけで足りずにMemory Accessが入って、その分性能が落ちているように思える。

ただ同じGeForceもCUDA系列はそこまで上手く行ってない(特にSLIの数値が異様に悪いのは、仕様というよりも何か動きがおかしい気がする)あたり、まだまだ改善が必要であろう。とはいえ、本来の目的であるTITANの性能評価としてはこれで十分であり、その高い性能がきちんと発揮されていると評してよいかと思う。

逆にSystem to Device(グラフ125)とDevice to System(グラフ126)だが、NVIDIAは依然としてX79チップセットはPCIe Gen3プラットフォームと認めていないようで、相変わらずPCIe Gen2で動作する。

まぁGPGPU的な動作を考えなければこれでも十分だろうが、スペック的にどうだろう? という気はする。正直TITANではちゃんとX79がGen3動作するかと思っていただけに残念だ。

ちなみにどちらのテストでも(Compute SHaderを除き)SLIの性能が良いのは2枚のカードから同時に転送を掛けているためで、1枚あたりの性能はやはりPCIe Gen2に制限されているようだ。

最後がVideo Bandwidhtである(グラフ127~129)。Internal(グラフ127)ではGeForce系列の場合、どのAPIでも上手く内部キャッシュで処理できるために結構な性能になり、Radeon系列はメモリアクセスが入っているという構図は変わらず。

一方System to Device(グラフ128)やDevice to System(グラフ129)ではPCIe Gen2の制限に引っ張られてGeForce系列が6GB/sec未満の帯域に留まるという話は、先のグラフ125~127と殆ど変わりが無かった。

次のページ:ベンチマーク結果「DirectCompute&OpenCL Benchmark」