Sun Studio 12:性能分析器

MPI 跟踪数据

收集器可以收集有关对消息传递接口 (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

 

MPI 跟踪数据被转换为以下度量。

表 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_BsendMPI_IsendMPI_RsendMPI_SendMPI_Ssend

MPI 接收函数 

MPI_IrecvMPI_Recv

MPI 发送和接收函数 

MPI_AllgatherMPI_AllgathervMPI_AllreduceMPI_AlltoallMPI_AlltoallvMPI_BcastMPI_Gather MPI_GathervMPI_ReduceMPI_Reduce_scatterMPI_ScanMPI_ScatterMPI_ScattervMPI_SendrecvMPI_Sendrecv_replace

其他 MPI 函数 

MPI_BarrierMPI_WaitMPI_WaitallMPI_WaitanyMPI_WaitsomeMPI_Win_fenceMPI_Win_lock

收集 MPI 跟踪数据有助于标识 MPI 程序中可能因 MPI 调用而产生性能问题的位置。可能发生的性能问题的例子有负载平衡、同步延迟和通信瓶颈。