测量MPI通信成本的工具

dx_*_*mrt 22 performance communication mpi

我正在使用MPI,我想测量通信成本,以便我可以将它们与"处理"成本进行比较,例如,我需要多长时间通过n个流程分散列表然后将其与多少时间进行比较时间我需要对它进行排序.

有没有人知道任何衡量这种通信成本的工具?(分散例如)

有没有什么可以测量MPI通信成本,例如PAPI来分析代码性能?

提前致谢!

Jon*_*rsi 27

是的,有很多这样的工具.MPI定义了一个工具接口,允许其他库在您的MPI函数调用中插入自己,并进行计数,计时等.

一个非常小的MPI分析工具是mpiP - 它给出了代码中MPI活动的简短摘要.

IPM库是相当容易的建立,给你大量的MPI数和时间,并给出了一个很好的HTML文件,作为一个结果.你提到PAPI; 如果可用,IPM还将集成PAPI计数器.我们经常在我们的中心使用这个,我认为这会做你喜欢的.如果您使用MPI的动态库构建程序,则甚至不需要重新编译即可使用它(mpiP具有相同的属性).

Jumpshot,MPICH2附带但可以使用任何MPI构建,实际上在时间线上显示每个MPI操作需要多长时间.

OpenSpeedshop为您的代码提供非常详细的性能测量,突出显示"昂贵"的线条; 它还具有MPI跟踪模式,可以按代码行识别MPI时间.安装起来可能很棘手.

在频谱的商业部分,有来自TU Dresden的Vampir和Intel Trace Analyzer and Collector(ITAC).Vampir使用开源VampirTrace库收集源级,MPI和OpenMP跟踪,该库还与PAPI集成以提供详细的事件和计数器跟踪.VampirTrace的痕迹采用开放式跟踪格式,除了Vampir之外,还可以通过各种其他工具读取.

ITAC是Intel Cluster Studio XE的一部分.它主要用于与英特尔MPI配合使用,与Vampir共享相同的祖先代码,提供或多或少相同的功能.它的一个很好的功能是包含自动运行时MPI正确性检查器.

Allinea MAPAllinea的MPI分析器,它使用集成的源浏览器提供性能分析,该浏览器显示通信/计算成本以及源代码的各个行.它还显示了性能信息的高级图,包括内存,CPU指令和通信.

但是还有其他更高级别的工具不仅可以提供报告,还可以提供建议.TACC的perfexpert是一个基于命令行的工具,它需要进行大量测量并提供一些性能调整建议.来自 Jülich的Scalasca,使用大量源代码级别的仪器重新编译代码,并且可以指出负载不平衡,特别是昂贵的MPI集合等.它还可以与Vampir集成以进行详细的跟踪分析.