为何收集 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 的 Sun HPC ClusterToolsTM 软件实现支持 MPI 跟踪。
除非已经预装入抽样收集器库 libcollector.so,否则不能在已经运行的程序中收集 MPI 跟踪数据。有关详细信息,参见在正运行的进程上收集性能数据。
有关详细信息,参见《程序性能分析工具》手册。
另请参见 | |
---|---|
收集性能数据 |