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 が事前に読み込まれていれば収集できます。 詳細については、動作中プロセスのパフォーマンスデータの収集を参照してください。
詳細についてはマニュアル『プログラムのパフォーマンス解析』を参照してください。
関連項目 | |
---|---|
パフォーマンスデータの収集 |