Jump to content 日本-日本語

製品  >  ソフトウェア  >  HP- UX Developer Edge

Itaniumの「底力」を引き出すHPのコンパイラ技術・後編

HP-UX/Integrityサーバー お問い合せ
コンテンツに進む
Itaniumの「底力」を引き出すHPのコンパイラ技術・後編

プロファイル・ベース最適化

HP Cコンパイラのプロファイル・ベース最適化(PBO)とは、アプリケーションを実際に動作させて計測したプロファイリング・データをもとにした最適化である。これはHPが業界で初めて実装したテクノロジだ。前出のマケール氏は「アプリケーションの性能を最大限に高めるうえで、PBOはもっとも重要なテクノロジーだ」と説明する。

HP CコンパイラにおいてPBOを実施するには、次のような手順で作業を進める。
Itaniumの「底力」を引き出すHPのコンパイラ技術・後編
HP Cコンパイラの最適化オプション
プロファイル・ベース最適化
HPが提供する開発ツール群

計測用実行ファイルの作成

まずは、以下のように+Oprofile=collectオプションを指定し、計測用の実行ファイルを作成する。

  cc -Aa +Oprofile=collect -c sample.c
cc -o sample.exe +Oprofile=collect sample.o
 

プロファイル・データの計測

続いて、上記の実行ファイルを起動し、プロファイル・データを収集する。これにより、計測結果が記録されたファイルflow.dataが作成される。

  sample.exe  

プロファイル・ベース最適化の実施

最後に、計測結果をもとにしてPBOによるコンパイルを実施する。このとき、オプションとしては+Oprofile=useを指定する。

  cc -Aa +Oprofile=use -O -c sample.c
cc -o sample.exe +Oprofile=use -O sample.o
 

以上が、PBO利用のための手順である。コンパイル作業を2回繰り返す必要があるが、アプリケーションのビルド・スクリプトに一連の手順を記述して自動化すれば手間が省ける。

このPBOによって、コードのどの経路が頻繁に実行されるか(ホット・パス)が判明する。ホット・パスの情報は、HP Cコンパイラの+O2以上の最適化においてとても貴重なヒントとなる。例えば、ホット・パス上の変数を優先的にレジスタ割付したり、ホット・パス上のコードをできるだけホット・パス外に移動したりできるようになる。また関数内のホット・パス外のコードを別関数に分割することで、命令キャッシュの容量を節約できる。さらには、switch文中のcase文を利用頻度の高い順に並べ替えたり、ホット・パスに対して積極的な投機実行やインライン化を適用したりできる。

上述した最適化オプションとPBOの併用により、平均で2〜3割のパフォーマンス改善が得られるという。実際、ベンダー各社が出荷するHP-UX/Itanium対応データベース製品をはじめ、HP-UXカーネルやHP Cコンパイラ自体が、PBOによって得られたコードで動作している。ISV製品やHPC分野で優れた威力を発揮する最適化機能と言えるだろう。

HPが提供する開発ツール群


最後に、HPが提供するおもなC/C++開発用ツールを紹介し、締めくくりとしたい。

HP Caliper

HP Caliperは、あらゆるItaniumバイナリ・コードに対して利用可能なパフォーマンス計測ツールである。このツールでは、Itaniumが内蔵するPMU(Performance Monitoring Unit)を利用し、リアルタイムに収集された300種類以上の統計情報を計測できる。例えば以下の表は、HP-UX/Itanium上のOracle 10gデータベースにてTPC-Cベンチマークを実行したときのPMUによる計測結果である。

表:Oracle 10gデータベースの計測結果
イベント クロック数の割合
データ・アクセス待ち 55%
通常処理 28%
命令アクセス待ち 9%
レジスタ・スタック待ち 5%
その他 3%
(出展: Squeezing performance out of the Itanium architecture, Tor Ekqvist, Hewlett-Packard Company, HP World Conference & Expo 2003, October 2003.)

この例では、Itaniumのクロック数のおよそ半分がデータ・アクセス待ち(キャッシュやメモリのレイテンシ)によって費やされていることが分かる。HP Caliperで得られるこうした情報を使えば、コードのさらなる最適化のポイントを明確にできる。
HP Caliper USサイト
ダウンロード USサイト

HP WDB

HP WDBは、gdbをベースにHPが拡張を加えたデバッガである。HP独自の機能として、動的なメモリ・リーク検出機能や、デバッグ中にコードを修正して継続実行できるfix and continue機能などを実装。またインターフェイスとしては、GUI(wdbおよびddd)とテキストベース(emacsおよびxdb)をサポートしている。
HP WDB USサイト
ダウンロード USサイト

Eclipse C/C++ IDE

HPでは現在、オープンソースの統合開発環境「Eclipse」をベースとしたC/C++開発ツール「Eclipse C/C++ IDE」の開発を進めている。このIDEでは、ネームスペースやクラスごとのC/C++コードのブラウズや編集をサポートしており、さらにHP CコンパイラやHP aC++コンパイラ、wdbなどを統合している。また、リモート・マシン上で動作するコンパイラやデバッガを手元のIDEから制御するリモート開発機能を実装している点が興味深い。
  Eclipse C/C++ IDE
  図2:Eclipse C/C++ IDE
 
Beta testers wanted for Eclipse-based C/C++ IDE USサイト

Firebolt

HPが従来からサポートする開発ツールが「Firebolt」である。このツールはvimを拡張したテキストベースの軽量IDEであり、エディタやコンパイラをはじめ、デバッガ、ヒープ解析、バージョン管理などの多彩な機能をviエディタ感覚で利用できるのが特徴だ。テキスト・エディタによる小回りの効く開発スタイルを好むエンジニアにお勧めのツールである。
  Firebolt
  図3:Firebolt
 
Firebolt USサイト

以上、本特集ではItaniumに固有のアーキテクチャと、それを駆使するためのコンパイラの最適化機能について解説した。Itanium対応コンパイラできちんと最適化を施せば、Itaniumの「埋もれた才能」を引き出せることがご理解いただけたはずだ。
トップへ 戻る    

その他のコラム(特集)もお読み下さい

 
 

本ページの内容は執筆時の情報に基づいており、異なる場合があります。
印刷用画面へ
プライバシー ご利用条件・免責事項