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

印刷ビューの終了

更新: 2015 年 1 月
 
 

MPI 実験の格納

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

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

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

実験の完了後に、実験を別の場所へ移動する予定がある場合、collect コマンドで –A copy オプションを指定します。実験のコピーまたは移動には、UNIX の cp または mv コマンドを使用しないでください。代わりに、Chapter 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 トレースコレクタの内部バッファーを 64M バイトに制限します。特定の 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_UNIFY が 0 に設定された場合、collect により後処理ルーチンは実行されません。後処理ルーチンは、実験で er_print または analyzer がはじめて起動したときに実行されます。


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