コレクタは、Message Passing Interface (MPI) ライブラリの呼び出しに関するデータを収集できます。現在、MPI トレースは、Solaris OS を実行しているシステムにのみ利用できます。データ収集の対象となる関数を次に示します。
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 |
表 2–4 MPI トレースメトリック
メトリック |
定義 |
---|---|
MPI 受信 |
データを受信する MPI 関数の受信操作回数 |
MPI 受信バイト数 |
MPI 関数で受信したバイト数 |
MPI 送信 |
データを送信する MPI 関数の送信操作回数 |
MPI 送信バイト数 |
MPI 関数で送信したバイト数 |
MPI 時間 |
MPI 関数のすべての呼び出しに使用した時間 |
ほかの MPI 呼び出し |
ほかの MPI 関数の呼び出し数 |
受信または送信したとして記録されたバイト数は、呼び出しにおいて与えられるバッファーサイズです。この数値は、実際に受信または送信したバイト数よりも大きいことがあります。大域通信関数と集合通信関数においては、直接的なプロセッサ間通信が行われるとともにデータ転送やデータ再送の最適化が行われないという前提に基づき、送信または受信されるバイト数が最大値となります。
トレースされる MPI ライブラリの関数を、MPI 送信関数、MPI 受信関数、MPI 送受信関数、およびその他の MPI 関数に分類して表 2–5 にまとめます。
表 2–5 送信、受信、送受信、およびその他の MPI 関数の分類
カテゴリ |
関数 |
---|---|
MPI 送信関数 |
MPI_Bsend、MPI_Isend、MPI_Rsend、MPI_Send、MPI_Ssend |
MPI 受信関数 |
MPI_Irecv、MPI_Recv |
MPI 送受信関数 |
MPI_Allgather、MPI_Allgatherv、MPI_Allreduce、MPI_Alltoall、MPI_Alltoallv、MPI_Bcast、MPI_Gather、 MPI_Gatherv、MPI_Reduce、MPI_Reduce_scatter、MPI_Scan、MPI_Scatter、 MPI_Scatterv、MPI_Sendrecv、MPI_Sendrecv_replace |
その他の MPI 関数 |
MPI_Barrier、MPI_Wait、MPI_Waitall、MPI_Waitany、MPI_Waitsome、MPI_Win_fence、MPI_Win_lock |
MPI トレースデータを収集すると、MPI 呼び出しによって MPI プログラムのパフォーマンスに問題が生じている可能性がある場所を確認できます。発生する可能性のあるパフォーマンスの問題の例には、負荷分散、同期遅延、通信ボトルネックなどがあります。