各パースペクティブに対し、インテル® Advisor にはいくつかのレベルの収集精度が用意されています。各精度レベルには、収集されるデータと収集の詳細レベルを制御する一連の解析とプロパティーが設定されています。選択する精度レベルが高いほど、アプリケーションの実行時間に課されるオーバーヘッドは大きくなります。
CLI では、それぞれの精度レベルは目的とする結果を得るため単独で実行する必要があるオプションを備えた一連のコマンドに対応します。
スレッド化のパースペクティブでは、精度レベルを 1 つずつ実行してスレッド化レポートを取得することを推奨します。
次の精度レベルが利用できます。
比較 / 精度レベル |
Low (低) |
Medium (中) |
|---|---|---|
オーバーヘッド |
1.1x |
5-8x |
目的 |
並列化の候補を検出します |
スレッドかの並列処理をモデル化しループ伝搬依存関係をチェックします |
解析 |
サーベイ |
サーベイ + 特性化 (トリップカウント) + スータビリティー + 依存関係 |
結果 |
基本サーベイレポート |
トリップカウント・データが拡張されたサーベイレポート。 依存関係レポート アノテーション付きのループに対してモデル化された並列パフォーマンスを含むスータビリティー・レポート |
インテル® Advisor の GUI から、必要とする精度レベルのコマンドラインを生成できます。詳細については、GUI からコマンドラインを生成するを参照してください。
次のコマンドの例について考えてみます。
注次のコマンドでは、コマンドを実行する前にmyApplicationをアプリケーションの実行可能ファイルのパスと名前に置き換えてください。アプリケーションが引数を必要とする場合、実行可能ファイル名の後にそれらを指定します。
最初に、低精度でスレッド化のパースペクティブを実行し、サーベイ解析結果から並列化の候補を見つけます。
次のように解析を実行します。
advisor --collect=survey --project-dir=./advi_results -- ./myApplication
生成された結果は、インテル® Advisor GUI または CLI で結果を開けます。合計時間が長いループ/関数は、並列化の最適な候補です。並列処理をモデル化するため、対象のループ/関数にアノテーションを追加します。
必要条件: 並列処理をモデル化するループ/関数にアノテーションを追加します。アプリケーションをリビルドします。
次のようにコマンドを実行します。
サーベイ解析を実行します。
advisor --collect=survey --project-dir=./advi_results -- ./myApplicationトリップ・カウント・データを収集します。
advisor --collect=tripcounts --project-dir=./advi_results -- ./myApplicationスータビリティー解析を実行して、アノテーション付きのループのスレッド並列処理をモデル化します。
advisor --collect=suitability --project-dir=./advi_results -- ./myApplicationアノテーションされたループの依存関係解析を実行します。
advisor --collect=dependencies --project-dir=./advi_results -- ./myApplication生成された結果は、インテル® Advisor GUI または CLI で結果を開けます。