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

Sandraに関しては完全に余禄というか、アプリケーション性能はここまで示してきた通りなので、もう少し理論性能寄りにするとどこまで性能が出るか、を一応確認のために実施してみた。

まずグラフ52・53がマンデルブロ図形の描画比較である。CUDAのHalf-Floatで、GeForce GTX 1070/1070Tiのみが突出しているのは、これのみNativeで動作しているから。GeForce GTX 1060は動作せず、GeForce RTX 2060はどうもうまくNative動作できなかったようで、Floatでのエミュレーションになっている模様だ。

これを除くと、Half/Single FloatはほぼCUDA Coreの数×動作周波数の比が表れている感じであるが、グラフ52のOpenCLで、GeForce RTX 2060の性能が異様に良いのは、やはりメモリ帯域の比であろうか?

もっともグラフ53のDouble/Quad-Floatになると、もはや演算器の方がボトルネックになっているようだ。ここのケースでは逆にGeForce RTX 2060の性能がいま一歩になっている。ベンチマークがTuringのコアに上手く対応というか最適化できていないのかもしれない。

グラフ54~56はCryptographyだが、なぜかGeForce GTX 1060はCUDAで動作せず。またD3D 11ではSHA2-512 Hasingが動作していない。それはともかくとして結果を見てみると、割とAPI別に性能が結構バラつくのが特徴的である。CUDA(グラフ54)で言えば、GeForce RTX 2060はHasingこそ高性能だが、AESのEncryption/Decryptionはパッとしない。

OpenCLだと、Encryption/DecryptionはCUDAコア数×動作周波数の比、という感じでGeForce RTX 2060はそこそこの性能。Hasingでは特にSHA2-256/512で高い性能なのは、メモリ帯域に関係している気がする。

これがD3D11になると、GeForce RTX 2060の性能は「そこそこ」といった感じに埋もれている。このあたり、まだドライバの熟成が十分でない、という感じを強く受ける。

グラフ57~59はFinancial Analysisで、こちらでもD3D11ではDouble-Floatが全部エラーだったので結果から省いている。3種類(Black-Scholes/Binomial/Monte Carlo)のオプション取引のシミュレーションは、処理負荷が大きく異なるので、結果の桁が結構違うが、Single Floatで言えば演算器よりもメモリ帯域の方がボトルネックになるようで、概してGeForce RTX 2060が良い成績を残している。

対してDouble-Floatではむしろ演算器の側がボトルネックになるようで、性能はまたもやCUDAコア数×動作周波数の比、という感じになっている。

グラフ60~62はScientific Analysisであるが、こちらはD3D11系が全滅なので、結果はCUDA/OpenCLのみである。まずGEMM(グラフ60)では以外にGeForce RTX 2060の性能が低めなのが気になる。

SGEMMでここまで低いのは、最適化が足りないというか、Turingのコアにまだ最適化が行われていない感じがする(DGEMMはもう演算器そのものがボトルネックなので、生の性能がそのまま出てる感じだが)。

FFT(グラフ61)になるとGeForce RTX 2060が圧倒的に高速で、これはメモリバスの帯域だけでなく、内部のデータの持ち方が改良されている部分もあるのかもしれない。

そしてそこまでメモリ帯域に敏感でないN-Body(グラフ62)になると、またもやCUDAコア数×動作周波数の比という感じの結果になっている。なかなか最適化というのは難しい、ということだろうか。

グラフ63からはメモリアクセスのLatencyである。今回はGlobal Data Memory(グラフ63~65)とTexture Memory(グラフ66~68)について、それぞれD3D11を利用して、3種類のアクセスパターンでの性能を比較してみた。

まずGlobal Dataで言えば、Sequential(グラフ63)だとGeForce RTX 2060は、~32KBまでは最速(というかLatency最小)なのが、その先はGeForce GTX 1070 Tiと大体同等になっている。

ただIn-Page Random(グラフ64)やFull Random(グラフ65)になると、128KBあたりからGeForce GTX 1070/1070 TiよりもちょっとLatencyが大きめになっているのは、メモリコントローラがGDDR6に変更になったことも絡んでいるのかどうか。GeForce GTX 1060が突出してLatencyが大きいのは、ちょっと解せないところではある。

これがTexture Memoryになると(グラフ66~68)、GeForce GTX 1060以外アクセスパターンに関係なくLatency一定、というのもなかなかな結果である。要するにD3D11からは見えないキャッシング機構がきちんと働いているという話だ。

ただGeForce GTX 1060では、このキャッシング機構でカバーしきれず、256KB以上で急激にLatencyが増える結果になっているようだ。まぁLatencyが一定といっても、GeForce RTX 2060ではちょっとLatencyが大きめに振れているようだが。