Sandra Platinum その1(グラフ37~52)

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

いつもだと内部分析はRMMAを利用して行うところなのだが、RMMAのためにはWindows 7以下でないと時間測定用ドライバ(RTCore64.sys)が動作しない。ところが実際にWindows 7をインストールしようとしても上手く出来なかった(一応Windows 7用のドライバそのものはMSIから提供されている)ため、時間の都合もあり今回RMMAは断念し、Sandra Platinumを利用しての分析をおこなってみることにした。

なお、Ryzen 5のレビューの際にはSandra Platinum 2017.04.2122を利用したが、今回バージョンがSandra Platinum 2017.05.2422に上がっていた。

テストであるが、まずトータルの性能として全スレッドを利用するもの(MT:Multi Thread)と、1スレッドのみを利用してテストを行うもの(ST:Single Thread)の片方あるいは両方を掲載している。このあたりは順次説明したい。

またSandraでは、またしてもCore i7-7820Xの機嫌がよろしくなかった。Core i7-6950XとCore i9-7900XはProcessor Scientific Analysisが動作しない「だけ」(これは過去もそうだった)だが、今回Core i7-7820XはなぜかこのProcessor Scientific Analysisが通った代わりに、Processor MultimediaとProcessor Cryptographyを実施すると、OSごとクラッシュするという謎の現象に見舞われ、最後まで解決しなかった。

MTはちゃんとスコアが出るのにSTだと結果が出ないものも少なくなかった。ただ、こちらはCore i9-7900XのSTスコアが出ていれば分析には困らないということで、このまま実施している。というか、全テストをまともにパスしたのがRyzen 7 1800Xだけどいうのはどう評したものか。

気を取り直して基本的なプロセッサ性能の確認から。グラフ37~40がDhrystoneとWhetstoneであるが、まずDhrystone/MT(グラフ37)は比較的順当というか、「本来こうなるべき」という結果がそのまま出ている感じである。これはWhetstone/MT(グラフ38)も同じであるが、Core i7-7820Xのスコアがやや低めに出ているのはちょっと不思議な感じだ。

では1Threadは? ということでDhrystone/ST(グラフ39)をみると、こちらは1ThreadということでIntel系はMax Turbo状態で動作しているようで、これもセオリー通りである。ただ、Ryzen 7 1800Xも健闘している感はある(といいつつ、Core i7-6950Xには追いつかない程度だが)。

Whetstone/ST(グラフ40)では、意外にもNativeだとCore i7-6950Xが最高速という結果になっているのはちょっと不可解である。また.NET/Javaでの演算性能が、Ryzen 7 1800Xというのも、(グラフ38にもその片鱗はあるが)不思議である。

次はProcessor Multimedia(グラフ41~44)。ここでなぜかCore i7-7820Xのみ、Nativeでのテストが出来ない(OSクラッシュ)ということで、結果からは省いた(.NET/Javaは動く、というのがまた分からないのだが)。

Integer/MTの結果がグラフ41で、Core i9-7900Xの性能の飛びぬけぶりは凄い。この理由は明白で、AVX512Fを利用しているためだ。実際Core i7-6950XはNative Integerは×64、Ryzen R7 1800Xは×32でしかないのに、Core i9-7900Xは×128で計算している。これで早くなければおかしい。もっともこれは.NETやJavaでは使えないので、こちらでの性能はそこそこである。

この傾向は当然Float/MT(グラフ42)でも継承されるか……と思いきや、最高速なのがCore i7-6950Xという結果となった。もっとも.NETやJavaではCore i9-7900Xがそれなりに高速なので、FPUが遅いということでもないのだろうが、AVX512Fを利用している割には性能が伸びない気がする。というか、.NETのSingle Floatで600MPixel/sec近い性能が出ているのに、AVX512を使った×64で653MPixel/secというのはあきらかにおかしい。

ということでこのあたりの疑問を留保した状態でSingle Threadの結果も見てみる。まずInteger/ST(グラフ43)で見ると、Core i9-7900Xが140MPixel/secでぶっちぎりである。Integer/MTだと1640MPixel/secだから11.7倍ほど。10core/20threadだから、条件が良ければこの程度の性能向上は妥当な範囲である。

問題はFloat/ST(グラフ44)で、Single Threadだと181.55MPixel/secものスコアとなる。ここからは筆者の推定だが、おそらくAVX512FをFloatでフル稼働させると、消費電力か発熱(あるいは両方)がリミットに達して、動作調整が行われるのだと思われる。

実際、ちょっと前からBIOS SetupのCPU関連項目に"CPU Ration Offset When Running AVX"なんて項目があるのはこのためである(Photo37)。おそらく今回はこれに引っかかったためで、もしSandraがAVX512を使わずにAVX2レベルで実行していたらまた違った結果になったのかもしれない。

Photo37:X299 GAMING M7 ACKのBIOS Setup。どれだけ動作周波数を落とすかを倍率で設定できる(上げる方向の項目はない)

次がCryptography(グラフ45とグラフ46)。これもCore i7-7820XはOSごとクラッシュするのでデータを取っていない。結果を見ると、Multi Thread(グラフ45)ではCore i7-7900XはCore i7-6950Xと変わらない程度だ。Hashingの性能が高いのはおそらくAVX512を利用しているためと思われる。

Single Threadでは? というと、意外にもRyzen 7 1800Xが健闘している。なぜこの性能がMulti Threadで反映されないかというと、おそらくメモリ帯域の方が先にボトルネックになっているためと考えられる。このあたりはDDR4 2chの限界というところだろうか。

グラフ47とグラフ48はFinancial Analysisの結果である。Black-ScholedのみMOptions/second、BinomialとMonte CarloはKOptions/secondなので注意されたい。

Multi Thread(グラフ47)ではCore i9-7900Xが他から頭一つ抜け出している感じだが、ほかの3製品はそれほど性能差がある感じではない。もっともSingle Thread(グラフ48)を見ると、ピーク性能自体は動作周波数に比例する感じ(Ryzen 7 1800Xを除く)で、MTでのCore i9-7900Xの性能の高さは10コアあることが有効に働いている様に思える。

余談だが、Binomial Single Floatの場合「のみ」、Ryzen 7 1800Xの性能が高い理由がいまいち良く分からない。Multi ThreadとSingle Threadの両方でこれが再現しているので、測定ミスということではないようだが。

次がScientific Analysis(グラフ49とグラフ50)。先に書いた通り、Core i7-6950XとCore i9-7900Xはこのテストが動作せず、ところがなぜかCore i7-7820Xはこれが通ったので、Ryzen 7 1800Xとの一騎打ちという妙な構図になった。

さて結果だが、Multi ThreadではやはりCore i7-7820Xの性能の高さは明白である。このあたりはRyzen 7 1800XではAVX2が有効になったCore i7-7820Xの敵ではない。

それはいいのだが、ちょっと不思議なのがSingle Thread(グラフ50)との比較である。Ryzen 7 1800XはSingle ThreadだとSGEMMで23GFlopsの性能が出るのに、なぜMulti-Threadで72GFlops程度なのか。そしてMulti-ThreadでDGEMMでは65.4GFlops出るのに、SGEMMが72GFlopsなのはなぜか? なんとなくRyzen 7 1800Xは、GEMMに関してはメモリバスがボトルネックになって、性能がこのあたりで頭打ちになっている気がする。

プロセッサ性能比較の最後は、Image Processing(グラフ51とグラフ52)である。まずMulti-Thread(グラフ51)を見ると、テスト項目によって差はあるが、Skylake-SPコアの性能が全体的に高いことは間違いない。

Core i7-6950Xがこれに続き、その次がRyzen 7 1800Xという構図は変わらない。ただテストによってはRyzen 7 1800Xもそう悪いスコアでないところが面白い。次にSingle Thread性能(グラフ52)を見てみると、案外にCore i7-6950XとRyzen 7 1800Xのスコアが違わない。

一方Skylake-SPコアの2製品は、比較的負荷が軽いBlur(3×3 Convolution)、Sharpen(5×5 Convolution)、Motion Blur(5×5 Convolution)あたりは大きな差になっているが、Edge Detection(Sobel : 2*3×3 Convolution)あたりから性能差が縮まるところを見ると、処理負荷が低いところではキャッシュの大きさを生かして性能を高く取れるが、処理負荷が高まるとそのメリットが薄れていくようだ。