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

そんなわけでOpenCLでは結果にバラつきがあるのがわかったわけだが、CUDAでは? ということで最後にこちらを実施してみた。ちなみにThreadripper 2でのベンチの際に利用したTitanium 2018.5.28.20だが、バグが多く(何しろScientific Analysisがことごとく落ちた)、それもあってか記事が掲載された8月13日にSP1bがリリースされた(なんという間の悪さ)。

もっともGPU Testに関して言えばまだバグが結構あるようで、今回も測定出来たり出来なかったり、というテスト項目が多数で、一応すべての環境でテスト結果が取れたもののみをまとめている。

まずGP Processing(グラフ54~57)。グラフ54のみ、結果の桁が極端に違うので横軸を対数にしている。これはGPUを使ってマンデルブロ図形の計算を行うというものだが、グラフ54のHalf-FloatでPascal+CUDAが極端に性能が低いのがちょっと解せないところ。

PascalではPacked FP16がCUDA Coreでサポートされているはずで、これはSandra側の問題の可能性もある。とりあえずTuringの2製品はきちんと動作しており、一安心というところか。ただそのTuring、D3D 11経由だと逆にFP16が動作しないのはどうしたものか。

Single-Float(グラフ55)、Double-Float(グラフ56)、Quad-Float(グラフ57)のどの環境でも動作しており、一応CUDAが最速、OpenCLがちょっとだけオーバーヘッドがあり、D3D 11だと結構遅くなるというのは共通である。

ただ、例えばSingle-FloatだとGeForce GTX 1080 TiとGeForce RTX 2080がまったく同じスコアになっているのは面白い。Double-FloatやQuad-Floatだと、GeForce GTX 1080 TiとGeForce RTX 2080 Tiが高速なのはCUDA Core側というより、メモリバスの方がボトルネックになっているのではないかと思われる。

グラフ58~60はCyrptography。グラフ58がAES128のEncryption/Decryptionで、これもCUDAコアの性能もさることながらメモリバスの帯域が効いてくる感じである。もっともGeForce GTX 1080 Tiが484GB/sec、GeForce RTX 2080が448GB/secだから、本来はもう少し結果が縮まってもよさそうな感じもする。

AES256(グラフ59)も傾向としてはグラフ58と同じだが、処理が複雑になる分、絶対性能はやや落ちている。このあたりもメモリ帯域の関係かもしれない。

Hasing(グラフ60)ではまた違った傾向が見られる。SHA1に関して言えば、CUDA Coreの性能、SHA2-256ではメモリバス帯域だが、SHA2-512ではTuringとPascalというアーキテクチャの差が効いてきているように思える。

もともとSHA2-512はデータ長が大きすぎて、既存の演算器では1cycleでの処理が出来ない。その分、遅くなるのはGeForceに限った話ではないので、GeForce GTX系の結果がむしろ一般的である。Turingで512bitデータを扱えるようにした、という話はいまのところ聞いたことがないので、ひょっとして内部で別のユニット(例えばTensor Coreとか)が利用しているのかもしれない。

Financial Analysis(グラフ61~63)は、全体的にCUDA Coreの性能がそのまま反映されている。ただGeForce系はFP64の処理が遅い(Photo01にもあるが、FP64の演算機は持ち合わせていないので、FP32を利用したエミュレーション動作となる)から、Doubleになると結果が2桁落ちるのは仕方ないところだろう(それが嫌ならTeslaを買え、というのがNVIDIAの公式な見解である)。

この結果はScientific Analysis(グラフ64~66)にもいえる。まずGEMM(グラフ64)だが、これはメモリバスがネックになっている典型的なパターンであり、FFT(グラフ65)とN-Body(グラフ66)はCUDA Coreの性能がそのまま出ている。

GEMMとN-BodyはDouble Precisionになると極端に性能が落ちるのは仕方がないところだろう。ちなみにFFTのDouble Precisionで性能が落ちないのは、演算そのものよりもバタフライ演算をするためのデータを並べ替える方に時間を食っている(ほかの2つに比べると結果が1桁小さい)から、相対的にDouble Floatの遅さがあまり問題にならないためだと思われる。

PCMark 10~Sandraまでの結果でまとめると、確かにGeForce RTX系2製品はOpenCLにしてもCUDAにしても高速化はされているが、内部構造の変化などもあるので、絶対に高速になるとは限らないというのが面白いところで、最終的にはターゲットアプリケーションを動かしてみないと分からない、ということになるだろう。