Oracle Solaris Studio 12.2: パフォーマンスアナライザ

MPI 実験の格納

マルチプロセス環境は複雑になることがあるので、MPI プログラムからパフォーマンスデータを収集するときは、MPI 実験の格納に関するいくつかの問題に留意する必要があります。これら問題はデータ収集とデータ保存の効率、実験の命名に関わります。MPI実験を含む命名実験については、「収集データの格納場所」を参照。

パフォーマンスデータを収集する各 MPI プロセスは、独自のサブ実験を作成します。MPI プロセスは、実験を作成している間、実験ディレクトリをロックします。このため、ほかのすべての MPI プロセスは、ロックが解放されるまで待ってからそのディレクトリを使用する必要があります。実験は、すべての MPI プロセスからアクセス可能なファイルシステム上に格納します。

実験名を指定しなかった場合、デフォルトの実験名が使用されます。コレクタは、各 MPI ランクについて 1 つのサブ実験を実験の中に作成します。コレクタは MPI ランクを使用して、M_rm .er の形式でサブ実験名を構築します (m は MPI ランク)。

実験の完了後に、実験を別の場所へ移動する予定がある場合、collect コマンドで -A copy オプションを指定します。実験のコピーや移動には、UNIX® の cp または mv コマンドを使用しないで、第 8 章実験の操作で説明されている er_cp または er_mv コマンドを使用してください。

MPI トレースでは、各ノード上に一時ファイル /tmp/a.*.z が作成されます。これらのファイルは、MPI_finalize() 関数呼び出しによって削除されます。ファイルシステムに、実験のため十分な空き容量があることを確認します。実行時間の長い MPI アプリケーションのデータを収集する前に、短時間のテストを実行してファイルサイズを確認します。必要な空き容量を推定する方法について、「必要なディスク容量の概算」も参照してください。

MPI プロファイルは、オープンソースの VampirTrace 5.5.3 リリースがベースになっています。サポートされているいくつかの VampirTrace 環境変数に加えて、VT_STACKS を新たに認識します。この環境変数は、呼び出しスタックをデータに記録するかどうかを制御します。これらの変数の意味については、VampirTrace 5.5.3 のドキュメントを参照してください。

環境変数 VT_BUFFER_SIZE のデフォルト値は、MPI API トレースコレクタの内部バッファーを 64 M バイトに制限します。特定の MPI プロセスについてこの制限に到達した後、VT_MAX_FLUSHES 制限にまだ到達していなければ、バッファーはディスクにフラッシュされます。デフォルトでは、VT_MAX_FLUSHES は 0 です。この設定を行うと、MPI API トレースコレクタは、バッファーがいっぱいになるたびにバッファーをディスクにフラッシュします。VT_MAX_FLUSHES を正数に設定すると、フラッシュ回数が制限されます。バッファーがいっぱいになり、フラッシュできない場合、そのプロセスについては、それ以降イベントがトレースファイルに書き込まれなくなります。結果として実験が不完全なものとなり、場合によっては実験が読み取り不能になることがあります。

バッファーのサイズを変更するには、VT_BUFFER_SIZE 環境変数を使用します。この変数の最適値は、トレース対象のアプリケーションによって異なります。小さい値を設定すると、アプリケーションで利用できるメモリーが増えますが、MPI API トレースコレクタによってバッファーのフラッシュが頻繁に引き起こされます。このようなバッファーのフラッシュによって、アプリケーションの動作が大幅に変化する可能性があります。一方、2G バイトなどの大きい値を設定すると、MPI API トレースコレクタによるバッファーフラッシュは最小限に抑えられますが、アプリケーションで利用できるメモリーが減少します。バッファーとアプリケーションデータを保持するための十分なメモリーが利用できない場合、この設定によりアプリケーションの一部がディスクにスワップされ、アプリケーションの動作が大きく変化する可能性があります。

もう 1 つの重要な変数は VT_VERBOSE で、各種のエラーメッセージおよび状態メッセージを有効にします。問題が発生した場合、この変数を 2 以上に設定してください。

通常、MPI トレース出力データは mpirun ターゲットの終了時に後処理されます。処理されたデータファイルは実験に書き込まれ、後処理時刻情報が実験ヘッダーに書き込まれます。MPI トレースが -m off により明示的に無効になっている場合、MPI 後処理は行われません。後処理に失敗した場合、エラーが報告され、MPI タブと MPI トレースメトリックスは使用できなくなります。

mpirun ターゲットが実際に MPI を起動しない場合、実験は記録されますが、MPI トレースデータは生成されません。実験により、MPI 後処理エラーが報告され、MPI タブと MPI トレースメトリックスは使用できなくなります。

環境変数 VT_UNIFY0 に設定された場合、collect により後処理ルーチンは実行されません。後処理ルーチンは、実験で er_print または analyzer が初めて起動したときに実行されます。


注 –

コンピュータまたはノード間で実験のコピーあるいは移動を行うと、ソースファイル、または同じタイムスタンプを持つコピーにアクセスできないかぎり、注釈付きソースコードまたは注釈付き逆アセンブリコードのソース行を表示できません。注釈付きソースを表示するため、元のソースファイルへのシンボリックリンクを現在のディレクトリに置くことができます。また、「データ表示方法の設定」ダイアログボックスの設定を使用することもできます。「検索パス」タブ (「「検索パス」タブ」を参照) では、ソースファイルの検索に使用するディレクトリのリストを管理できます。「パスマップ」タブ (「「パスマップ」タブ」を参照) では、ファイルパスの先頭部分を、ある場所から別の場所へマッピングできます。