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%であっても、メモリを換えるだけでスコアが上がれば、それは採用する価値がある、と看做されても不思議ではない。このあたりは立場の違いも当然あるだろう。