このチュートリアルの主な目的は、次の 3 つです。
- パフォーマンス問題の単純な例とその確認方法を説明する。
- パフォーマンスアナライザの機能を紹介する。
- パフォーマンスアナライザがどのようにパフォーマンスデータを表示し、どのように各種のコードコンストラクションを取り扱うかを説明する。
このチュートリアルでは、次の 5 種類のサンプルプログラムを使用します。
- 例 1: 基本的パフォーマンス解析。 この例では、タイミングデータを使用してパフォーマンス問題を確認する方法を示し、関数、ソース行、および命令が時間の消費にどのように寄与しているかを示し、再帰呼び出し、オブジェクトモジュールの動的読み込み、および派生プロセスをパフォーマンスアナライザがどのように取り扱うかを示します。 この例では、アナライザのメインディスプレイである「関数」タブ、「呼び出し元-呼び出し先」タブ、「ソース」タブ、「逆アセンブリ」タブ、および「タイムライン」タブを使用します。
サンプルプログラム synprog は、C で書かれています。
- 例 2: Java と C++ による混合アプリケーションのパフォーマンス解析。 この例では、インタプリタ処理された Java メソッドとコンパイルされた Java メソッドをアナライザがどのように処理するかを示します。 サンプルプログラム
jsynprog
は Java プログラミング言語で記述されており、JNI を使用してネイティブコードを呼び出しています。
- 例 3: OpenMP 並列化戦略。 この例では、Fortran プログラムである omptest を OpenMP 指令を使用して並列化するさまざまな方法での効率について説明します。
- 例 4: マルチスレッドプログラムにおけるロック戦略。 この例では、スレッドに対するさまざまな作業スケジューリング方法の効率およびデータ管理がキャッシュパフォーマンスに及ぼす効果を示し、同期遅延データを活用します。 この例では、明示的なマルチスレッド C プログラムでありクライアント / サーバーアプリケーションのモデルの 1 つである mttest を使用します。
- 例 5: キャッシュの動作と最適化。 この例では、Fortran 90 プログラムである cachetest の実行速度に対するメモリーアクセスとコンパイラの最適化の効果を紹介します。 また、パフォーマンス解析におけるハードウェアカウンタデータとコンパイラコメントの使い方も紹介します。
このチュートリアルでは、サンプルプログラムを自分の作業スペースにコピーし、パフォーマンスデータの収集と解析を行います。 設定方法については、チュートリアルの設定を参照してください。 データ収集方法、チュートリアルの実施方法、およびコメントについては、以下の該当する項目を参照してください。
基本的パフォーマンス解析
Java と C++ による混合アプリケーションのパフォーマンス解析
OpenMP 並列化戦略
マルチスレッドプログラムにおけるロック戦略
キャッシュの動作と最適化
各トピックの「関連項目」セクションには、チュートリアルのトピックで触れる概念や GUI 機能に関する情報のリンクが記載されています。
また、『プログラムのパフォーマンス解析』のチュートリアルも参考になります。 このチュートリアルには、アナライザ出力のスクリーンショットやプログラム実行方法が記載されています。 自分でデータを収集したくない場合や必要なハードウェアを利用できない場合のパフォーマンスツール使用方法も紹介しています。
著作権と商標について