收集器可以收集有关对消息传递接口 (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 函数的调用数量 |
接收或发送时记录的字节数为调用中给定的缓冲区大小。此数字可能比接收或发送的实际字节数大。在全局通信函数和集合通信函数中,假定直接进行处理器间通信且未优化数据传输或重新传送数据,则发送或接收的字节数为最大数量。
表 2–5 中列出了被跟踪的 MPI 库的函数,分类为 MPI 发送函数、MPI 接收函数、MPI 发送和接收函数以及其他 MPI 函数。
表 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 调用而产生性能问题的位置。可能发生的性能问题的例子有负载平衡、同步延迟和通信瓶颈。