LINPACK を試してみる

LINPACKベンチマークはスパコンTOP500を決めるベンチマークとして有名で、今回試した物はIntelが自社製CPU向けにチューニングしたLINPACKのスタンドアロンです。

Windows版を色々試して判った事は、
1:OpenMPライブラリは圧縮ファイルに同梱されている
  (redist\intel64\compiler\libiomp5md.dll)
2:HyperThreadをOFFにしないと異様にスコアが悪い
3:Sandy-EPのAVXでNehalem世代の倍速になる
4:メモリ8GBでは最後まで実行出来ませんが16GBならOK
5:IntelBurnTest用のexeを使う事で他社製CPUでも実行可
6:BulldozerはHyperThreadをONにした時と同じ傾向

手順:
1:Intel LINPACKをDownload
2:解凍
3:linpack_11.0.0\benchmarks\linpack に
  redist\intel64\compiler\libiomp5md.dll をコピー
4:AMDやVIAのCPUで実行する場合はIntelBurnTestを入手し
  linpack_11.0.0\benchmarks\linpack\Linpack_xeon64.exe に
  IntelBurnTest\LinData\x64\linpack64.exe を上書きコピー
5:linpack_11.0.0\benchmarks\linpack\runme_xeon64.bat を実行
6:終了するまで待つ(10分~数時間程度)
7:linpack_11.0.0\benchmarks\linpack\win_xeon64.txt に結果が出力される

結果:
注:Intel最適化(Intel製)バイナリですからAMD製品の結果は実態から乖離しています。
XEON E5-2670 ( 8-Core × 2-CPU 3000MHz TB-all ) 312 GFLOPS(AVX)追記
Opteron 6386 ( 8-Core × 2-CPU 2800MHz non-TB ) 102 GFLOPS(nonFMA)追記
XEON E5-2603( 4-Core × 2-CPU 1800MHz non-TB ) 103 GFLOPS
Opteron 4280 ( 4-Core × 2-CPU 2800MHz non-TB ) 78 GFLOPS(nonFMA)
XEON X5675 ( 6-Core × 2-CPU 3066MHz non-TB ) 135 GFLOPS
Opteron 2439 ( 6-Core × 2-CPU 2800MHz non-TB ) 106 GFLOPS
XEON E5450 ( 4-Core × 2-CPU 3000MHz non-TB ) 74 GFLOPS
Opteron 290 ( 2-Core × 2-CPU 2800MHz non-TB ) 18 GFLOPS
XEON 5050  ( 2-Core × 2-CPU 3000MHz non-TB ) 18 GFLOPS

経緯、妄想、その他:
なぜこんな事をしたかと云いますとSandy-EPのAVX用演算機が128Bitなのか256Bitなのかを確かめようとした訳です(Sandy-EPではAVXレジスタが256Bitでも演算機は128Bitだという情報が有ったからです→整数演算機はAVXでも128Bitなので、浮動少数が256Bit、整数が128Bitのところ、浮動少数まで128Bitと誤解した記事を元にしてしまったのかもしれません)。

AVXが仮に1クロックで4個(256Bit演算機 ÷ 64Bit倍精度 = 4個)同時演算と仮定するなら
XEON E5-2603 4-Core × 2-CPU × 1.8GHz(non-TB) × 4(FLOPS) = 58 GFLOPS
に成る筈ですが、結果は 103 GFLOPS で概ね倍のスコアです。逆に言うと1コア1クロックあたり8回演算程度のスループットです。

Core世代 SSE では 1クロックで2個(128Bit演算機 ÷ 64Bit倍精度 = 2個)同時演算と仮定するなら
XEON X5670 6-Core × 2-CPU × 3.1GHz(TB-ALL) × 2(FLOPS) = 74 GFLOPS
XEON E5450 4-Core × 2-CPU × 3.0GHz(non-TB) × 2(FLOPS) = 48 GFLOPS
に成る筈ですが、結果はそれぞれ概ね倍のスコアです。逆に言うと1コア1クロックあたり4回演算程度のスループットです。

NetBurst世代の SSE では
XEON 5050 2-Core × 2-CPU × 3.0GHz × 2(FLOPS) = 24 GFLOPS
ですから、恐らく1コア1クロックあたり2回演算程度のスループットです。

ここから想像するに、下記のどちらかに成りそうです。
1:IntelのLINPACKバイナリは32Bit単精度で測定している
2:SSE/AVX演算を1クロックで2回程度実行可能
※:調査を進めた結果、CoreMAやK10では剰算機と加算機を1個づつ持っている為、剰算と加算を1クロックで同時に実行出来る様です。つまり剰算命令と加算命令が同数程度のプログラムで1クロック2命令が達成出来る様です。更にSandyBridgeでは演算機が128→256Bitに拡張され倍速化している様です。逆にBulldozer系CPUは1モジュール2コアで1個のAVX汎用(加減剰余)演算機、又は2個のSSE汎用演算機を共有する為、従来方式のチューニングでは1コア辺りSandyBridgeのAVXに対し1/4、CoreMAやK10の1/2の性能(LINPACKでの性能)しか出せません。
本来KMP_AFFINITYを指定する事でコアとスレッドの対応を細かく設定出来るのですが、このオプションはIntelのCPUでしか機能しない(その様にIntelがプログラミングした)為、Bulldozerモジュールとスレッドを1対1で対応させる様な指定は出来ませんでした。
OMP_NUM_THREADSでスレッド数を限定しコアとスレッドの対応を固定する事が出来るのですが、Bulldozerでは単にスレッド数が制限されるに留まりました。
起動後にタスクマネージャでコアを制限する事は出来るのですが、それをするとOpenMP内のスケジューリングがうまくいかなくなる様です。
色々試した結果 OMP_NUM_THREADS でスレッド数をモジュール数と同数に設定してタスクマネージャでモジュールとスレッドの対応付けをし、それを2プロセス同時実行する事で通常起動した時の1.6倍程度の合算性能に成りました。
Bulldozer系CPUではFMA(SSE5)を使う様にリコンパイルしないと最大性能が出せない様です。3DNow!の再来かと思うようなデジャブを感じています。しかしこれはAVX用に再コンパイルする事と労力的には等価なはずですが・・・FMA(SSE5)の方がよりマイナーという点で情報が少なく、情報収集の点で難易度が若干高いかもしれません。


いづれにしろSandy-EPで演算機がNehalem世代に比べ倍速に成ったのは確かな様です。
BulldozerでもFMA(SSE5)に最適化したリコンパイルをすればNehalemを超える性能が出そうです。
もっと云えば NetBurst → Core → Sandy でそれぞれ倍速に成っている様です。(WikiのSSEに書いてある事と合致)
※ AMD も K8 → K10 → Bull でそれぞれ倍速には成っているのですがBulldozerではAVXではなくFMA(SSE5)を使わないと倍速化しない為、各種ベンチマークで速度改善していない様に指摘されているのだと思います。但しSandra2012 SP5cでプロセッサ:マルチメディアのSIMDベンチマークを測定するとBulldozerではFMA(SSE5)を利用していると思われるスコアが出ますので、ベンチマークも徐々に対応しつつあるのだと思います。
現時点で最新のAMD APPが対応してないっぽいスコアなのは少々残念ですが・・・

仮にIvyBridge-EPの演算機がSandyBridge-EPの演算機と同一なら
12-Core × 2-CPU × 3.0GHz × 8(FLOPS) = 576 GFLOPS
ですから 12-Core 品が 3GHz程度以上ならデュアルソケットで Tesla の現行ハイエンドを超えます。
ワット辺りパフォーマンスは同程度でしょう。
 Tesla C2075 TDP225W 515GFLOPS = 2.3GFLOPS/W
 XEON E5-26xx v2 TDP130W×2 576GFLOPS = 2.2GFLOPS/W

もちろん、Teslaを複数枚挿せば逆転しますので、後は物量的な話です。

参考までに、OpenCLベンチマークの表にピーク性能と共にLINPACKの結果を追記してみました。
OpenCL-Bench-2-LPK-6.png
関連記事
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

DualSocketTheWorld

Author:DualSocketTheWorld
自作を始めて20台目くらいになりますが、最初からデュアルソケット限定(始めた当時はデュアルスロット)で自作しており、近年になってAMD K6を試したくなりSocket7でK6-2+のシングル構成で組んだのがシングル初です。

シングルマザー(含:シングルソケットマルチコア)や4ソケット以上の自作は基本的にしませんし、メーカー製PCの改造も基本的にはしません(ノートPCのSSD化くらいはしますが・・・)

基本路線はワークステーションと呼ばれる分野での自作で、OSもWindows系であればProfesionalが主な対象に成ります。

ゲーマーの様なOverClockは行わず、WS路線としてハイエンドCPUとハイエンドGPUの組み合わせで定格或いはDownClockで発熱を抑えつつ、その時のアーキテクチャに置いて爆速かつ静音を目指し、30年以上の長期に渡り稼動状態をキープする事を目指します。

※基本的にリンクフリーです。どこでも自由にどうぞ。

※画像は時々変ります。

※お決まりの文章ですが、改造は個人の責任で行ってください。ここに記載された情報は間違いを含んでいる可能性が有り、それを元に製作や改造などをして失敗しても筆者は一切責任持てませんので悪しからず。

筆者略歴:
小学生時代にゴミ捨て場で拾ったジャンクテレビ数台を分解して部品を取り出し真空管アンプを自作、中学生時代にPC8801mkⅡsrでZ80アセンブラを始める。社会人になって初のプログラムは弾道計算、後に医療系・金融系プログラマ~SEを経て100~200人規模プロジェクトのジェネラルマネジャを数年経験、独立して起業。現在は不動産所得で半引退生活。
(人物特定を避ける目的で一部経歴を変更しています)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
アクセスカウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR