Intel Optimized SMP LINPACK Benchmark package

Linpackに関して、32bitでのスコアはこちらで示した通りだが、では64bitも混ぜるとどうなるか? というのがグラフ20である。Core i7-965とCore 2 QX9770に絞り、Hyper-Threading有効/無効と32bit/64bitの性能を比較してみた。

さて、結果を見るとまずQX9770が64bitの時に急激にスコアを落としている。実はこれ、筆者の設定ミス。IntelのLINPACK Benchmark packageは64bitの場合には32bitのときより多くのメモリを使うようで、ほぼ32bitと同じConfigurationで実施したにも関わらず、途中でメモリ不足によりHDDアクセスが多発しすぎで大幅にスコアを落としてしまった。Core i7は1GB多い3GB構成だったので、ぎりぎりスコア低下は免れたようだ。

それはそれとして、スコアを比較すると、ちょっと面白い事がわかる。Size=10000(32bitの場合LDA=10008,64bitではLDA=10000)の場合の数値を比べたのが表5だが、Core 2ではそれでも7.8%程度の性能向上が見られるのに、Core i7ではむしろスコアが落ちてしまっていることだ。

■表5 (単位:Gflops)
32bit 64bit 性能向上率
Core i7-965 32bit HT有効 20.234 15.115 -25.3%
Core i7-965 32bit HT無効 43.163 42.205 -2.2%
Core 2 QX9770 32bit 40.544 43.524 7.4%

もっともこれは、64bitの最適化が進んでいないというよりも、Configurationに問題がある(デフォルトの64bit用Configurationだとメモリが絶対的に足りず、常にHDDアクセスが発生して性能測定どころではなかったので、32bit用のものを参考に筆者が作り直したConfigurationを使っている)可能性は高いが、それにしてもCore 2と同じ傾向にはならないというあたり、Core i7用の最適化が別途必要になる事がここからは言えると思う。

グラフ21は再び32bit(Hyper-Threading有効)に戻り、メモリ構成別のスコアを測定してみたところだ。なぜか筆者はうっかり1333MHz×1の測定をし損ねており、1333MHz×1だけデータがない事をお詫びしておく。概ね、スコアはメモリの絶対的な帯域に準じて並んでいるが、1066MHz×3よりも1333MHz×2の方が高速、というあたりは単に絶対的な帯域のみならず、メモリコントローラの動作速度も関係していることを伺わせる。またCPU Intensiveなテストなだけに、メモリの帯域は絶対的な要素ではない事も伺わせる。もっと言えば、4コアで1~4GB程度(つまりコアあたり256MB~1GB)程度では小規模なサイズのテストしか出来ず、本来の性能を完全に引き出すところまで行かないのかもしれない。とはいえ、あまりメモリ性能が大きな影響を与えるところまでいかない、という事はわかった(*1)。

(*1) もっともこれはデスクトップアプリケーションからの見方であって、HPCの分野ではたとえ1%であっても、メモリを換えるだけでスコアが上がれば、それは採用する価値がある、と看做されても不思議ではない。このあたりは立場の違いも当然あるだろう。