2009年 6月 26日 金曜日 Sun Studio 12 update 1 の OpenSolaris での SPEC CPU2006 ベンチマーク
コンパイラの性能を把握する一つの指標としてベンチマークが挙げられます。2009/06/23 にSun は、Sun Blade X6275 Server Module で SPEC CPU2006 の整数演算と浮動小数点演算の 2 つの世界記録を更新しデータを提出した。と発表しました。SPECint2006 で 37.4、SPECftp2006 で 50.8 というスコアを出したとのことです。
構成の概要として以下のものが挙げられています
リンク先の見出しの右側にあるオレンジの ">>" をクリックすると詳細情報が表示されます。
SPEC に提出されたデータは SPEC CPU2006 の結果は SPEC の Web サイトにある CPU2006 Results -- Form から検索して参照することができます。上記の 6/23 の結果は新しすぎるのか見ることができませんでしたが、例えばフォームで以下のように入力して、ページの一番下にある「Fetch Result」をクリックすると、提出済みの Sun Blade X6275 のベンチマークをすべて見ることができます。
| Column | Display | Criteria |
|---|---|---|
| Hardware Vendor | SKIP | |
| System | Display | [matches] sun blade x6275 |
| Operating System | Display | |
| Compiler | Display |
出てきた結果の中に以下の行が見えます。(C/P は Cores Per Chip (チップあたりのコア数) です)
System Result Base # Cores # Chips # C/P Operating System Compiler Published Sun Blade X6275 (Intel Xeon X5570 2.93GHz) 36.7 29.7 8 2 4 OpenSolaris 2008.11 Sun Studio 12 Update 1, (backend build 20090309) Apr-2009 Sun Blade X6275 (Intel Xeon X5570 2.93GHz) 34.9 31.2 8 2 4 SuSe Linux Enterprise Server 10 Intel C++ and Fortran Compiler 11.0 for Linux, Build 20080930 Apr-2009
OpenSolaris 2008.11 上の Sun Studio 12.1 (おそらく Early Access 版 Sun Studio Express 2009.03) と、SuSE Linux Enterprise 上の Intel コンパイラの CINT2006 (SPECint) の結果です。この 2 行でコンパイラの優劣を決めることは全然できません。実際のデータとして Sun Studio 12 update 1 による最適化は整数、浮動小数点ともに悪くない結果が出ているということを知っていただければと思います。
使われた最適化オプション
個人的には、ベンチマーク結果以上に使われた最適化オプションの方に興味があります。上記の値で検索した結果のページから CINT2006 の Sun Studio 12 update 1 コンパイラを使った行にある「HTML」と書かれたリンクをクリックすると ベンチマーク結果の詳細ページ が開きます。このページの後半にある Peak Optimization Flags を見ると、使われたコンパイラオプションをみることができます。例えば 400.perlbench のために以下のようなオプションが使われています:
-xprofile=collect:./feedback(pass 1) -xprofile=use:./feedback(pass 2) -fast -xipo=2 -xpagesize=2M -xvector=simd -xalias_level=std -xprefetch=no%auto -lbsdmalloc -lumem
まず (pass1) として -xprofile=collect を指定してコンパイルし、プロファイルデータを収集した上で -xprofile=use を指定してコンパイルしていることがわかります。-xalias_level=std や -xprefetc=no%auto は対象のプログラムによって適していたりいなかったりするので、一概にこれを使うべきというものではないですが、-xipo=2 は多くのプログラムで試してみることができるのではないかと思います。自動並列化 (-xautopar) を使ってコンパイルしたプログラムがいつくかあることもわかります。以下は C++ の 473.astar というプログラムで使われた最適化オプションです:
-xprofile=collect:./feedback(pass 1) -xprofile=use:./feedback(pass 2) -fast -xipo=2 -m64 -xpagesize=2M -L/data1/SmartHeap_9/lib -R/data1/SmartHeap_9/lib -lsmartheap_mt64 -xalias_level=compatible -library=stlport4 -xautopar
最適化オプションとして -fast 以外にどのようなものが使えるのか、マニュアルページやドキュメント等を調べる以外に、SPEC のベンチマークで使われたオプションを見てみるのも一つの方法ではないかと思います。
参考
Posted by keiichio
( 6月 26日 2009年, 08:02:17 午後 JST )
Permalink
投稿されたコメント [0]