Keiichi Oono's Weblog

All | cc | NetBeans | OpenSolaris | Personal
« 2009年Apr月月 | 月別メイン | 2009年Jun月月 »
20090626 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 というスコアを出したとのことです。

構成の概要として以下のものが挙げられています

06/23/2009 The Sun Blade X6275 Server Module Posts Two World Speed Records on Floating Point and Integer Benchmarks

リンク先の見出しの右側にあるオレンジの ">>" をクリックすると詳細情報が表示されます。

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]

20090625 2009年 6月 25日 木曜日

Sun Studio 12 update 1 を OpenSolaris 2009.06 にインストール

OpenSolaris 2009.11 に Sun Studio 12 update 1 をインストールしてみました。

このページの説明を参考にインストールしました。
http://developers.sun.com/sunstudio/downloads/opensolaris/index.jsp

パッケージマネージャーの検索ボックスで studio と入力し、Enter を押すと以下の 4 つのパッケージが現れます。sunstudio12u1 が出てこない場合には、ツールバーの「再読み込み」ボタンを押して見てください。私の環境では「再読み込み」を押さないと出てきませんでした。

    ss-dev
    sunstudio
    sunstudio12u1
    sunstudioexpress

sunstudio12u1 を選択して「依存関係」タブをチェックすると、SUNWlibC (C++ 標準ライブラリ) や SUNWlibm (数値計算ライブラリ) などに依存していることがわかります。SUNWj6 で始まる JDK 6 のパッケージ群にも依存しています。これは、統合開発環境 (IDE) として NetBeans 6.5.1 を基盤にしていて、NetBeans 6.5.1 の C/C++ 関連の機能が Sun Studio 12 update 1 に含まれていることによります。NetBeans 自身が JDK を必要とするため、Sun Studio 12 update 1 をインストールするときに JDK 6 を同時にインストールすることが求められるます。

インストールを開始するには通常のパッケージのインストール手順通り、チェックボックスをチェックしてツールバーで「インストール/更新」をクリックします。私の環境では JDK 6 以外に sunstudio12u1 のために追加されたパッケージは SUNWhea, SUNWarc の 2 つでした。

インストールが完了すると Sun Studio に含まれるコマンドは /usr/bin にシンボリックリンクが置かれるので、C コンパイラ /usr/bin/cc や C++ コンパイラ /usr/bin/CC は即座につかえるようになります。統合開発環境は /usr/bin/sunstudio です。ファイルそのものは /opt/sunstudio12.1 にインストールされるので、Sun Studio が提供するコマンドは /opt/sunstudio12.1/bin を見ると把握できます。

Sun Studio を起動します

$ sunstudio

NetBeans 6.5.1 のマルチリンガル版に基づいた統合開発環境 (IDE) なので、日本語環境で実行すると、かなりの部分は日本語で表示されます :-)

今回のリリースで追加された新機能であるデバッガ dbxtool も起動してみます

$ dbxtool

例えば、dbxtool でデバッグオプション付きでコンパイルされた実行ファイルを dbxtool で開くことで GUI 環境で デバッグが行えます。統合開発環境ではなくて例えば vi + dbxtool や emacs + dbxtool といった組み合わせで、GUI 上でのステップ実行等を現在の開発環境から即座に行うことができます。C の hello world (hello.c)cc -g でコンパイルして a.out を dbxtool から開いたのが以下の画面です:

dbxtool についてはあらためて詳しく紹介できればと思っています。

 
Posted by keiichio ( 6月 25日 2009年, 12:58:59 午後 JST ) Permalink 投稿されたコメント [0]

20090624 2009年 6月 24日 水曜日

Sun Studio 12 update 1 がリリースされました

2009 年 6 月 22 日に Sun Studio 12 update 1 がリリースされました。

Sun の米国の開発者サイトにユーザー登録すると、無料でダウンロードすることができます。OpenSolaris 2008.11 または 2009.06 をお使いの方々はパッケージマネージャーからインストールできます。

今回は英語版のみのリリースです。日本語版については今しばらくおまちください。

OpenSolaris でパッケージマネージャーからインストールする場合、パッケージ名は sunstudio12u1 です。コマンドラインからインストールする場合は以下を実行します:

$ pfexec pkg install sunstudio12u1

ダウンロードサイト:
http://developers.sun.com/sunstudio/downloads/index.jsp

システム要件

Solaris SPARC Solaris x86 Linux x86
OS Solaris 10 1/06 およびそれ以降のアップデートリリース SuSE Linux Enterprise Server 10
Red Hat Enterprise Linux 5
CentOS 5
CPU UltraSPARC および SPARC64 Pentium クラスもしくはそれ以上の AMD または Intel の x86 CPU (32bit および 64bit)
メモリ 推奨: 1 から 2 GB
最小: 512 MB (IDE で開くプロジェクトの大きさに比例して、より多くのメモリが必要となります)

詳しくは リリースノート (英語) を見てください。

前回リリースの Sun Studio 12 から約 2 年ぶりのバージョンアップとなります。評価用の先行リリースであるSun Studio Express を試用していた方々は Sun Studio 12 update 1 の機能のほとんどをすでに体験済みかもしれませんが、これまで Sun Studio 12 を使っていた方々は以下の新機能の情報を参考にしてください。

新機能

参考

英語のページのみとなりますが以下のページも参考にしてください:

 
Posted by keiichio ( 6月 24日 2009年, 05:14:12 午後 JST ) Permalink 投稿されたコメント [0]

Calendar

RSS Feeds

最近の 10 Entries

Links

Navigation

Search