MPI アプリケーションを解析

インテル® Advisor はクラスター上で実行される並列タスクを解析可能であるため、MPI アプリケーションのベクトル化やスレッド化の可能性を調査できます。

MPI ジョブを開始するには、mpirunmpiexecsrunaprun などの MPI ランチャーを使用します。インテル® MPI ライブラリーまたは他の MPI 実装とともにインテル® Advisor を使用できるのは、コマンドライン・インターフェイスからのみですが、その結果はスタンドアロン GUI とコマンドラインで表示できます。ここで説明する例では、mpirunadvisor コマンドライン・インターフェイス (CLI) を使用して、クラスター全体にプロセスを配置し、アプリケーションのデータを収集しています。

環境変数を使用して通信情報を渡す MPI 実装を使用します。実装では、ランチャープロセスとアプリケーション・プロセスの間にインテル® Advisor プロセス (advisor) が存在する場合も動作しなければなりません。インテル® Advisor は、親プロセスから直接通信情報を渡す MPI 実装では機能しません。

MPI アプリケーションの解析:

  1. 要件: 環境変数を設定して、インテル® Advisor CLI を有効にします。
  2. オプション:事前定義されたコマンドラインの取得
  3. インテル® Advisor 解析から、次のいずれかを操作を行います。
  4. 結果を表示

次のいずれかの方法でアプリケーションを解析します。

事前設定されたコマンドラインを取得

インテル® Advisor グラフィカル・ユーザー・インターフェイス (GUI) では、インテル® MPI ライブラリー・ランチャーまたはカスタムランチャーの結果を収集するため、事前設定されたコマンドラインを生成できます。この場合、すべてのオプションとプロジェクト・ディレクトリーとアプリケーションの実行可能ファイルへのパスを指定するため、それぞれのコマンドを手動で入力する必要はありません。

詳細については、コマンドラインを生成するを参照してください。

インテル® MPI ライブラリーを使用

インテル® MPI ライブラリーを使用すると、インテル® Advisor を使用して MPI アプリケーションの単一、または複数の MPI ランクを解析できます。これは、解析のオーバーヘッドを軽減するのに有効です。

ランク 0 の設定には時間がかかる場合があり、一般的な MPI アプリケーションのパフォーマンスを適切に収集できないため、解析にはランク 1 以上を使用することを推奨します。

MPI コマンド構文

インテル® MPI ライブラリーの mpirun ランチャーを使用してインテル® Advisor から MPI アプリケーションのパフォーマンス・データを収集するには、次のコマンド構文を使用します。

mpirun -gtool "advisor --collect=<analysis-type> --search-dir src:r=<source-dir> [--no-auto-finalize] --project-dir=<project-dir>:<rank-set>" -n <N><application-name> [<application-options>]

説明:

インテル® MPI ライブラリーを使用して MPI アプリケーションの単一のランクを解析

必要条件: 環境変数を設定して、インテル® Advisor CLI を有効にします。

以下を前提とします。

この例では、インテル® MPI ライブラリーの gtool オプションを使用して、MPI アプリケーションのランク 1 に対しサーベイ、トリップカウント、およびルーフライン解析を実行する方法を示します。

  1. ランク 1 でサーベイデータを収集し、ターゲットシステムの ./advi_results 共有プロジェクト・ディレクトリーに保存します。
    mpirun -gtool "advisor --collect=survey --project-dir=./advi_results:1" -n 4 ./mpi_sample
  2. ターゲットシステムでランク 1 の FLOP 収集とトリップカウント解析を実行します。
    mpirun -gtool "advisor --collect=tripcounts --flop --project-dir=./advi_results:1" -n 4 ./mpi_sample

    サーベイ、トリップカウント、および FLOP データを収集すると、アプリケーションのルーフライン・レポートを取得できます。

  3. データが共有ロケーション以外にある場合、結果を表示する前にローカルシステムにデータをコピーしてください。
  4. ローカルシステムで、任意の方法で結果を表示します。結果は一度に 1 つのランクのみを表示できます。

インテル® MPI ライブラリーを使用して MPI アプリケーションの複数のランクを解析

必要条件: 環境変数を設定して、インテル® Advisor CLI を有効にします。

以下を前提とします。

ランクのセットを解析

この例では、インテル® MPI ライブラリーの gtool オプションを使用して、MPI アプリケーションの一連のランクに対しサーベイ、トリップカウント、およびルーフライン解析を実行する方法を示します。

  1. ランク 1、2、および 4 でサーベイデータを収集し、ターゲットシステムの ./advi_results 共有プロジェクト・ディレクトリーに保存します。
    mpirun -gtool "advisor --collect=survey --project-dir=./advi_results:1-2,4" -n 4 ./mpi_sample
  2. ターゲットシステムでランク 1、2、4 の FLOP 収集とトリップカウント解析を実行します。
    mpirun -gtool "advisor --collect=tripcounts --flop --project-dir=./advi_results:1-2,4" -n 4./mpi_sample

    サーベイ、トリップカウント、および FLOP データを収集すると、アプリケーションのルーフライン・レポートを取得できます。

  3. データが共有ロケーション以外にある場合、結果を表示する前にローカルシステムにデータをコピーしてください。
  4. ローカルシステムで、任意の方法で結果を表示します。結果は一度に 1 つのランクのみを表示できます。

すべてのランクを解析

この例では、インテル® MPI ライブラリーの gtool オプションを使用して、MPI アプリケーションのすべてのランクに対しサーベイ、トリップカウント、およびルーフライン解析を実行する方法を示します。

  1. すべてのランクでサーベイデータを収集し、ターゲットシステムの ./advi_results 共有プロジェクト・ディレクトリーに保存します。
    mpirun -gtool "advisor --collect=survey --project-dir=./advi_results" -n 4 ./mpi_sample
  2. ターゲットシステムですべてのランクの FLOP 収集とトリップカウント解析を実行します。
    mpirun -gtool "advisor --collect=tripcounts --flop --project-dir=./advi_results" -n 4./mpi_sample

    サーベイ、トリップカウント、および FLOP データを収集すると、アプリケーションのルーフライン・レポートを取得できます。

  3. データが共有ロケーション以外にある場合、結果を表示する前にローカルシステムにデータをコピーしてください。
  4. ローカルシステムで、任意の方法で結果を表示します。結果は一度に 1 つのランクのみを表示できます。

インテル® MPI ライブラリー以外を使用

インテル以外の MPI ライブラリー実装では、インテル® Advisor は MPI アプリケーションのすべてのランクのみを解析できます。これは解析のオーバーヘッドを増加させます。

MPI コマンド構文

mpirun ランチャーを使用してインテル® Advisor から MPI アプリケーションのパフォーマンス・データを収集するには、次のコマンド構文を使用します。

mpirun -n <N> "advisor --collect=<analysis-type> --search-dir src:r=<source-dir>--trace-mpi [--no-auto-finalize] --project-dir=<project-dir>" <application-name> [<application-options>]

説明:

インテル® MPI ライブラリー以外を使用して MPI アプリケーションを解析

必要条件: 環境変数を設定して、インテル® Advisor CLI を有効にします。

以下を前提とします。

この例では、インテル® MPI ライブラリーの 4 つのランクに対しサーベイ、トリップカウント、およびルーフライン解析を実行する方法を示します。

  1. すべてのランクでサーベイデータを収集し、ターゲットシステムの ./advi_results 共有プロジェクト・ディレクトリーに保存します。
    mpirun -n 4 "advisor --collect=survey --project-dir=./advi_results"./mpi_sample
  2. ターゲットシステムで FLOP 収集とトリップカウント解析を実行します。
    mpirun -n 4 "advisor --collect=tripcounts --flop --project-dir=./advi_results" ./mpi_sample

    サーベイ、トリップカウント、および FLOP データを収集すると、アプリケーションのルーフライン・レポートを取得できます。

  3. データが共有ロケーション以外にある場合、結果を表示する前にローカルシステムにデータをコピーしてください。
  4. ローカルシステムで、任意の方法で結果を表示します。結果は一度に 1 つのランクのみを表示できます。

すべての解析タイプと MPI ライブラリー: Windows* で共有パーティションを使用する場合、ネットワーク・パス、あるいは MPI オプション mapall または map を使用してネットワーク・ドライブ上のプロジェクトと実行ファイルの場所を指定します。

例:

mpiexec -gwdir \\<host1>\mpi -hosts 2 <host1> 1 <host2> 1 advisor --collect=survey --project-dir=\\<host1>\mpi\advi_results -- \\<host1>\mpi\mpi_sample.exe

advisor --import-dir=\\<host1>\mpi\advi_results --project-dir=\\<host1>\mpi\new_advi_results --search-dir src:=\\<host1>\mpi --mpi-rank=1

advisor --report=survey --project-dir=\\<host1>\mpi\new_advi_results

または

mpiexec -mapall -gwdir z:\-hosts 2 <host1> 1 <host2> 1 advisor --collect=survey --project-dir=z:\advi_results -- z:\mpi_sample.exe

または

mpiexec -map z:\\<host1>\mpi -gwdir z:\-hosts 2 <host1> 1 <host2> 1 advisor --collect=survey --project-dir=z:\advi_results -- z:\mpi_sample.exe

結果を表示

インテル® Advisor は、--project-dir で指定されたプロジェクト・ディレクトリーにある解析された各ランクのサブディレクトリーに収集結果を保存します。rank.<n> という形式の名前が付けられます。数値サフィックス <n> は解析された MPI タンクに対応します。一度に表示できるのは 1 つのランクの結果のみです。

特定のランクで収集されたパフォーマンス結果を表示するには、次のいずれかの方法を使用します。

GUI で 結果を表示

インテル® Advisor GUI から、<project-dir>/rank.<n> ディレクトリーにある結果プロジェクトのファイル *.advixeproj を開きます。

コマンドラインから GUI を開くこともできます。

advisor-gui ./advi_results/rank.1

データ収集時に --no-auto-finalize オプションを使用している場合、インテル® Advisor が適切に結果をファイナライズできるよう、結果を表示する前にアプリケーションのバイナリーとソースファイルへのパスを必ず指定します。

コマンドラインから結果を表示

インテル® Advisor の --report アクションを実行して、結果のサマリーをターミナルに出力します。

advisor --report=<analysis-type> --project-dir=<project-dir> --mpi-rank=<n>

説明:

ファイルで結果を表示

指定したランクの結果を TXT、CSV、または XML ファイルに保存できます。例えば、次のコマンドで advisor_result.csv ファイルに結果を保存します。

advisor --report=<analysis-type> --format=csv --report-output=advisor_result.csv --project-dir=<project-dir> --mpi-rank=<n>

説明:

その他の MPI 関連のリソース

MPI アプリケーション解析の詳細については、インテル デベロッパー・ゾーンのインテル® MPI ライブラリーとオンライン MPI ドキュメント (https://www.intel.com/content/www/us/en/developer/tools/oneapi/mpi-library.html (英語)) をご覧ください。

構文の詳細は、「インテル MPI ライブラリー・デベロッパー・リファレンス (Linux*)」 (英語) または「インテル MPI ライブラリー・デベロッパー・リファレンス (Windows*)」 (英語) を参照してください。

ハイブリッド・アプリケーション: インテル® デベロッパー・ゾーンのインテル® MPI ライブラリーと OpenMP* (https://www.isus.jp/products/c-compilers/hybrid-applications/)

関連情報