■Intel Optimized SMP LINPACK Benchmark package
Intel
http://www.intel.com/
LINPACK Benchmarkといえば毎年二回、TOP500として知られるHPCの性能評価のランキング付けの評価に使われることで大変に有名である。LINPACK Benchmark本体そのものや、必要となるBLAS(Basic Linear Algebra Subprograms)はNetlibでリファレンスが公開されており、後はこれを元に自分でチューニングをしてゆくことになるが、例えばBLASについてIntelはMKL(Math Kernel Library)でCore 2を始めとするプロセッサに最適化されたBLAS/LINPACKパッケージを用意しており、実際これを組み込んだLINPACK Benchmarkそのものも配布している。パッケージはSMP用のLINPACKとクラスタ構成用のMP LINPACKからなり、更にSMP用のLINPACKはXeon32/Xeon64/Itaniumの3つが用意されている。
このパッケージも、実際はパラメータが自由に調整できるので、これを元に自分でチューニングしてゆくものだが、今回はXeon32用を使い、デフォルトパラメータそのままで実行してみた。
さて、何も考えずに実施した結果がグラフ16である。QX9770とQ9650の性能差が大きすぎるとか言う話もあるのだが、それよりもCore i7系の低迷振りがちょっと信じがたい。そこでためしにHyper-Threadingを無効にしてみた結果がグラフ17である。
理論値的には3.2GHz動作×4演算/Cycle×4コア=51.2GFlops(SSE3を使った場合)になるから、約43.7GflopsというCore i7-965のスコアは85%強の効率となり、チューニングをしていない割には良い結果だと思うが、それよりも問題は何故Hyper-Threadingを有効にすると半分以下に落ちるか、である。8Threadに対応していないわけではない(Quad Core Xeonの2P構成にも対応しているからだ。実際動作させると8Threadをちゃんと認識している)ので、ありえるのはリソース(メモリ、演算器)の競合だろう。ちょっと意外な感じではあるが、物理8コアに最適化されたアプリケーションを4コア+Hyper-Threading環境に持ち込むと性能が極端に落ちる場合がある、という良い見本かもしれない。