スータビリティー解析は、アノテーションが追加された並列サイトのパフォーマンス特性を予測するため、シリアルプログラムを実行して調査します。このデータは、複数の CPU 上で並列プログラムを実行する際のパフォーマンス・ゲインと、並列オーバーヘッドの影響を推測するのに役立ちます。
並列処理を追加する最適な場所を選択するため、プログラム全体のゲインに最も貢献する並列サイトの場所を特定します。スレッドの開始などの並列実行のオーバーヘッドにより、特定の並列サイトとタスクがプログラム全体のゲインにつながらないか、パフォーマンスを低下させる可能性があります。パフォーマンスの向上につながらない並列サイトやタスクを特定したら、それらのアノテーションを変更するか削除します。
スータビリティー・ツールを実行して、[Suitability Report (スータビリティー・レポート)] ウィンドウにデータを表示します。このウィンドウは複数の領域を含んでいます。
ウィンドウ内の場所 | 説明 |
---|---|
上 |
スータビリティー・ツールが検出したアノテーションに関連するエラーは、[Suitability Report (スータビリティー・レポート)] ウィンドウの上部に表示されます。エラーが発生した場合、表示されているスータビリティー・データの信頼性は保証されません。エラーに関連するソースの場所を表示するには、![]() |
左上 |
左上のエリアはプログラムの [Maximum Program Gain for All Sites (すべてのサイトの最大プログラムゲイン)] を表示します。並列処理を実装する主な目的は、[Maximum Program Gain for All Sites (すべてのサイトの最大プログラムゲイン)] を増やし、並列プログラムの実行をより高速化することです。測定されたシリアル実行時間、予測並列実行時間、および測定されたポーズされた時間は、Maximum Program Gain for All Sites (すべてのサイトの最大プログラムゲイン) の下に表示されます。予測されたスータビリティー・ゲイン値を使用して、詳しい情報を得た上で並列処理を実装すべき場所を決定できます。 |
右上 |
右上にある modeling parameters (モデル化パラメーター) を使用してパフォーマンスをモデル化します。ドロップダウン・リストから、ハードウェア構成とスレッド化モデル (並列フレームワーク) を選択します。[Target System (ターゲットシステム)] で、インテル® Xeon Phi™ プロセッサーを選択すると、追加の項目 [Coprocessor Threads (コプロセッサー・スレッド)] が表示されます。 この行の下のデータグリッドには、プログラム実行中に検出された各並列サイトのパフォーマンスの予測値が表示されます。[Site Label (サイトラベル)] には、サイト・アノテーションへの引数が示されます。[Maximum Program Gain for All Sites (すべてのサイトの最大プログラムゲイン)] への各サイトの貢献度を推測するため、[Site Gain (サイトゲイン)] と [Impact to Program Gain (プログラムゲインへの貢献度)] の予測 (高い値が良い) を調査します。[Combined Site Metrics (結合されたサイトメトリック)] または [Site Instance Metrics (サイト・インスタンス・メトリック)] の下にあるデータを展開するには、見出しの右にある コマンドツール・バーを表示/非表示にするには、 |
左中央 |
[Target System (ターゲットシステム)] で [CPU] を選択した場合、タスクやロックと同様に選択したサイトの詳しい特性を見るには、[Site Details (サイト詳細)] タブをクリックします。 [Scalability of Maximum Site Gain (最大サイトゲインのスケーラビリティー)] グラフには、選択したサイトのパフォーマンス・サマリーが示されます。グラフの X 軸には、CPU プロセッサー数またはコプロセッサーのスレッド数の合計が示され、Y 軸にはターゲットの予測パフォーマンス・ゲインが示されます。デフォルトの [CPU Count (CPU 数)] と [Maximum CPU Count (最大 CPU 数)] を変更するには、オプション値を設定します。 |
左下 |
グラフの下には、予測パフォーマンス・ゲインを妨げる問題のリストとシリアルおよび予測並列時間が示されます。行を展開するには、項目名の右にある下矢印をクリックします。大部分の問題は、[Runtime Modeling (ランタイムのモデル化)] の モデル化パラメーター に関連します。後で、インテル® VTune™ プロファイラー などの解析ツールを使用して、並列プログラムの実際のパフォーマンスを測定できます。 |
中央下 |
並列パフォーマンスを改善する異なるループ構造、反復数、およびインスタンスの存続時間を調査するには、[Loop Iterations (Tasks) Modeling (ループ反復 (タスク) のモデル化)] (または [Tasks Modeling (タスクのモデル化)]) の modeling parameters (モデル化パラメーター) を使用します。 予測されるパフォーマンスへの影響を見るには、[Apply (適用)] をクリックします。 |
右下 |
[Runtime Modeling (ランタイムのモデル化)] の モデル化パラメーター を使用して、どの並列オーバーヘッド・タイプが、並列パフォーマンスに影響するか調査します。後で選択した並列フレームワークの機能を使用するか、並列処理を実装した後に並列コードをチューニングして指摘されたカテゴリーに対処する場合、カテゴリーを確認します。 |
右下 |
[Target System (ターゲットシステム)] で [Intel Xeon Phi (インテル® Xeon Phi™)] または [Offload to Intel Xeon Phi (インテル® Xeon Phi™ へオフロード)] を選択した場合、[Runtime Modeling (ランタイムのモデル化)] の下に [インテル® Xeon Phi™ 製品向けの高度なモデル化] オプションが表示されます。このオプションを展開するには、[Intel Xeon Phi Advanced Modeling (インテル® Xeon Phi™ 製品向けの高度なモデル化)] の右にある下方向の矢印をクリックします。 |
[Site Details (サイトの詳細)] タブをクリックして |
[Target System (ターゲットシステム)] に [CPU] を選択すると、[Site Details (サイトの詳細)] タブは選択された並列サイトに関する詳細、およびサイト内の各タスクとロックが実行された詳細を示します。 |
アクティブな結果を使用している場合 (読み取り専用の結果ではなく)、モデル化パラメーターを変更することができます。モデル化パラメーターを変更し [Apply (適用)] をクリックすると、[Loop Iterations (Tasks) Modeling (ループ反復 (タスク) モデル化)] や [Tasks Modeling (タスクのモデル化)] を除くデータは更新されます。並列処理を追加する最適な場所を選択するため、これらのモデル化パラメーターはアノテーションの影響を理解するのに役立ちますが、表示されるデータは特定の並列ハードウェア上での最終的な実行時間を正確に評価するものではありません (一般的なプロセッサー特性が使用されます)。
後で並列コードを追加する前に、アプリケーションで使用する並列フレームワーク (スレッド化モデル) を 1 つ選択する必要があります。
サイトに関連するソースコードを表示するには、サイトのリスト (右上の領域) を確認して次の操作を行います。
列をダブルクリックして (または、右クリックしコンテキスト・メニューから [View Source (ソースを表示)] を選択)、[Suitability Source (スータビリティー・ソース)] ウィンドウを表示します。[Suitability Report (スータビリティー・レポート)] ウィンドウへ戻るには、[Suitability Report (スータビリティー・レポート)] をクリックします。
列の右クリックしコンテキスト・メニューから [Edit Source (ソースを編集] を選択して、コードエディターに対応するソースファイルを表示します。Linux* でインテル® Advisor GUI を使用している場合、[Options (オプション)] > [Editor (エディター)] ダイアログボックスで定義するエディターが起動され、対応する場所のファイルが開かれます。Windows* でインテル® Advisor GUI を使用する場合は、ファイルタイプ (または [Open (開く)] ダイアログボックス) に関連付けられたエディターで表示されます。Microsoft* Visual Studio* では、ファイルの対応する場所が Visual Studio* コードエディターに表示されます。[スータビリティー・レポート] または [スータビリティー・ソース] ウィンドウへ戻るには、次の操作を行います。
[Result (結果)] タブをクリックします。
[Suitability Report (スータビリティー・レポート)] または [Suitability Source (スータビリティー・ソース)] をクリックします。
[スータビリティー・ソース] ウィンドウでは次のことができます。
[コールスタック] ペインは、コールスタックのさまざまな位置へのアクセスを提供します。
コードエディターで対応するソースファイルを開くには、ソースコード行をダブルクリック (または右クリックして[コードを編集] を選択 ) します。Linux* でインテル® Advisor GUI を使用している場合、[Options (オプション)] > [Editor (エディター)] ダイアログボックスで定義するエディターが起動され、対応する場所のファイルが開かれます。Windows* でインテル® Advisor GUI を使用する場合は、ファイルタイプ (または [Open (開く)] ダイアログボックス) に関連付けられたエディターで表示されます。Microsoft* Visual Studio* では、ファイルの対応する場所が Visual Studio* コードエディターに表示されます。[Result (結果)] タブに戻るには、[Result (結果)] をクリックします。
[Suitability Report (スータビリティー・レポート)] をクリックして、[Suitability Report (スータビリティー・レポート)] ウィンドウへ戻ります。
[Result (結果)] タブには、[Suitability Report (スータビリティー・レポート)]、[Suitability Source (スータビリティー・ソース)] およびその他のインテル® Advisor ウィンドウが表示されます。プロジェクトには 1 つの [Result (結果)] タブがあります。
選択した [Target System (ターゲットシステム)] に応じて、2 つの異なるグラフが表示されます。スケーラビリティー・グラフの説明については、「スータビリティー・レポートの概要」を参照してください。
[Suitability Report (スータビリティー・レポート)] ウィンドウでは、最上位から開始し、サイトを選択し、[Suitability Report (スータビリティー・レポート)] ウィンドウの詳細を見てソースコードを調査します。それぞれのアノテーション・サイトを調査するため、この手順を繰り返します。必要に応じてこの情報を表示して、コードエディターでアノテーションを変更します。
各サイトの可能性を評価するため、次のガイドラインを使用します。
選択したサイトの [Site Gain (サイトゲイン)] 値が 1.0 以下の場合、並列スレッド実行のオーバーヘッドはパフォーマンス・ゲインを上回る可能性があります。タスクとそれらを囲むサイトのアノテーションを変更または削除します。それぞれの並列サイトでこの手順を繰り返します。
選択したサイトの [Site Gain (サイトゲイン)] 値が 1.0 より大きい場合、すべての並列サイトに適用される [Maximum Program Gain for All Sites (すべてのサイトの最大プログラムゲイン)] へのサイトの貢献を確認します。[Maximum Program Gain for All Sites (すべてのサイトの最大プログラムゲイン)] への貢献度が低いサイトでは、タスクとそれらを囲むサイトのアノテーションを変更または削除します。[Maximum Program Gain for All Sites (すべてのサイトの最大プログラムゲイン)] への貢献度が高いサイトでは、アノテーションと並列スレッド実行の各種オーバーヘッド・コストの解決方法に関する仮定をさらに詳しく調査します。アノテーションを調整することで、パフォーマンス・ゲインを向上したり、オーバーヘッドを軽減できることがあります。それぞれの並列サイトでこの手順を繰り返します。
すべてのサイトに対する [Maximum Program Gain for All Sites (すべてのサイトの最大プログラムゲイン)] と [Site Gain (サイトゲイン)] 値が適度な、または大幅なパフォーマンス・ゲインを示す場合、依存関係ツールを使用する次のワークフロー手順に進み、データ共有の問題解決のため残りのアノテーションを調査します。