MPI トレースデータの収集目的
MPI トレースデータを収集することで、MPI の呼び出しに起因した MPI プログラムのパフォーマンスの問題を特定することができます。 このようなパフォーマンスの問題には、負荷分散、同期化遅延、通信障害などがあります。
コレクタによる MPI トレースデータの収集
コレクタは実際の MPI 関数にラッパー関数を介入させ、呼び出しやこれらの呼び出しで消費される時間をトレースします。 トレースの対象となるMPI 関数を次に示します。
| MPI_Allgather | MPI_Allgatherv |
| MPI_Allreduce | MPI_Alltoall |
| MPI_Alltoallv | MPI_Barrier |
| MPI_Bcast | MPI_Bsend |
| MPI_Gather | MPI_Gatherv |
| MPI_Irecv | MPI_Isend |
| MPI_Recv | MPI_Reduce |
| MPI_Reduce_scatter | MPI_Rsend |
| MPI_Scan | MPI_Scatter |
| MPI_Scatterv | MPI_Send |
| MPI_Sendrecv | MPI_Sendrecv_replace |
| MPI_Ssend | MPI_Wait |
| MPI_Waitall | MPI_Waitany |
| MPI_Waitsome | MPI_Win_fence |
| MPI_Win_lock |
パフォーマンス解析ツールで表示される MPI トレースメトリック
MPI トレースデータは次のメトリック (計測データ) に変換されます。
| メトリック | 定義 |
|---|---|
| MPI 受信 | データを受信する MPI 関数での受信処理回数 |
| MPI 受信バイト数 | MPI 関数で受信したバイト数 |
| MPI 送信 | データを送信する MPI 関数での送信処理回数 |
| MPI 送信バイト数 | MPI 関数で送信したバイト数 |
| MPI 時間 | MPI 関数のすべての呼び出しに使用した時間 |
| 他の MPI 呼び出し | その他の MPI 関数の呼び出し数 |
送信または受信したバイト数は、その呼び出しに与えられたバッファサイズです。 この値は、実際の送受信バイト数より大きいことがあります。 大域通信関数と共同通信関数においては、プロセッサ間通信が直接に行われるとともにデータ転送の最適化やデータの再送が行われないという前提に基づき、送信または受信されたバイト数が最大値となります。
同様に送信処理または受信処理の回数も、実際に実行された処理回数より大きいことがあります。
MPI トレースデータ収集に関する制限事項
MPI トレースは MPI の Sun HPC ClusterTools[tm] 実装でのみサポートされています。
既に実行されているプログラムからは MPI トレースデータを収集することはできません。ただし、コレクタライブラリの libcollector.so が事前に読み込まれていれば収集できます。 詳細については、動作中プロセスのパフォーマンスデータの収集を参照してください。
詳細についてはマニュアル『プログラムのパフォーマンス解析』を参照してください。
| 関連項目 | |
|---|---|
| パフォーマンスデータの収集 | |