インテル® Advisor には、Fortran、C および C++ (ネイティブ/マネージド) アプリケーションでインテル® Xeon® プロセッサーのような最新のプロセッサーのパフォーマンスを最大限に引き出すことができるように支援する 2 つのツール (ベクトル化最適化ツールとスレッド化設計/プロトタイプ生成ツール) が含まれています。このトピックでは、Linux* プラットフォームでのスレッド化アドバイザー GUI の使用方法を説明します。
スレッド化アドバイザーには次のような機能があります。
正確で完全なスレッド化アドバイザーの解析結果が得られるアプリケーションを作成するには、以下の設定を使用してリリースモードでアプリケーションの最適化されたバイナリーをビルドします。
操作
最適な C/C++ および Fortran 設定
インテル® Advisor のアノテーションの定義に関連する追加ディレクトリーを検索します。
C++ 向け:
-I${ADVISOR_XE_[product_year]_DIR}/include
Fortran 向け:
完全なデバッグ情報を要求します (コンパイラーおよびリンカー)。
-g
中程度の最適化を要求します。
-O2 またはそれ以上
マルチスレッドのダイナミック・リンク・ライブラリーにある未解決の参照を検索します。
C++ 向け:
-Bdynamic
Fortran 向け:
-shared-intel
ダイナミック・ロードを有効にします。
-ldl
追加の操作:
環境を設定するには、次のいずれかの操作を行います。
デフォルトのインストール・パス <advisor-install-dir> は次のとおりです。
インテル® Advisor のスレッド化アドバイザーを使用するには、以下の操作を行います (白のブロックはオプションです)。
advixe-gui コマンドを実行します。
[Threading Workflow (スレッド化ワークフロー)] の [Survey Target (調査ターゲット)] で、 コントロールをクリックして、アプリケーションの実行中に調査データを収集します。収集した情報を使用して、スレッドによる並列化の候補を判断します。
このステップはオプションです。
トリップカウント解析を実行する前に、[Survey Trip Counts Analysis (調査トリップカウント解析)] タイプで適切な [Project Properties (プロジェクト・プロパティー)] を設定していることを確認します。
[Threading Workflow (スレッド化ワークフロー)] の [Find Trip Counts (トリップカウントの検索)] で、 コントロールをクリックして、アプリケーションの実行中にトリップカウントを収集します。収集した情報を使用して、特定のループのスレッド化方法に関する決定をより適切に行います。
[Self Time (セルフ時間)] と [Total Time (合計時間)] の観点から最もホットなループに特に注目してください。これらのループを最適化すると最も効果があります。[Total Time (合計時間)] の長い最外ループは、多くの場合、スレッドによる並列化に適した候補です。最内ループおよび最内ループに近いループは、多くの場合、ベクトル化に適した候補です。
後で並列実行が可能な並列フレームワーク・コードに置換できるように、最適な候補であるアプリケーションの場所をマークするため、アノテーションを挿入します。アノテーションを挿入した後、リリースモードでアプリケーションをリビルドします。
インテル® Advisor のアノテーションは、次の場所をマークします。
エディターにコピーできるアノテーション付きソースコードのサンプルが用意されています。
アノテーション付きコード
目的
反復ループ、単一タスク
タスクコードがループ本体全体を含む、単純なループ構造を作成します。この一般的なタスク構造は、並列サイト内に 1 つのタスクのみ必要な場合に便利です。
ループ、1 つ以上のタスク
タスクコードがループ本体全体を含まないループ、または複数のタスク終了アノテーションを含む、特定のタスクの開始-終了境界を必要とする複雑なループやコードを作成します。この構造は、並列サイト内に複数のタスクが必要な場合にも便利です。
関数、1 つ以上のタスク
並列サイト内の複数のタスクを呼び出すコードを作成します。
収集の一時停止/再開
データ収集を一時的に停止して後から再開します。アプリケーション実行の収集が不要な部分をスキップして、収集されるデータを最小限に抑え、大きなアプリケーションの解析を高速化できます。並列サイトの外部に、これらのアノテーションを追加します。
ビルド設定
使用中の言語に固有のビルド (コンパイラーおよびリンカー) 設定を指定します。
適合性解析を実行する前に、[Suitability Analysis (適合性解析)] タイプで適切な [Project Properties (プロジェクト・プロパティー)] を設定していることを確認します。
[Threading Workflow (スレッド化ワークフロー)] の [Check Suitability (適合性のチェック)] で、 コントロールをクリックして、アプリケーションの実行中に適合性データを収集します。
適合性レポートは、挿入されたアノテーションおよび次のような what-if モデル化パラメーターに基づいて、データの最大スピードアップを予測します。
収集した情報を使用して、スレッドによる並列化の最適な候補を選択します。
依存性解析を実行する前に、[Dependencies Analysis (依存性解析)] タイプで適切な [Project Properties (プロジェクト・プロパティー)] を設定していることを確認します。(同じアプリケーションを使用しますが、可能な場合は入力データセットをより小さくします。)
[Threading Workflow (スレッド化ワークフロー)] の [Check Dependences (依存性のチェック)] で、 コントロールをクリックして、アプリケーションの実行中に依存性データを収集します。予測されたスピードアップが労力に見合う場合は、収集した情報を使用して、データ共有問題を修正します。
アプリケーション・パフォーマンスの向上
このステップはオプションです。
予測されたスピードアップがスレッド並列処理をアプリケーションに追加する労力に見合うと判断した場合、次の操作を行います。
ステップ 4 および 5 で選択した並列フレームワークから適切な並列コードを追加するとともに、インテル® Advisor のアノテーションを維持、コメントアウト、または置換することができます。