MPI トレースデータ

関連項目

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 が事前に読み込まれていれば収集できます。 詳細については、動作中プロセスのパフォーマンスデータの収集を参照してください。

詳細についてはマニュアル『プログラムのパフォーマンス解析』を参照してください。

関連項目
パフォーマンスデータの収集

著作権と商標について