用于衡量 MPI 通信成本的工具



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

有谁知道任何工具来衡量这种通信成本?(例如散点(

是否有任何可以测量MPI通信成本的方法,例如,PAPI来分析代码性能?

提前感谢!

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

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

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

Jumpshot随MPICH2一起提供,但可以使用任何MPI构建,实际上在时间轴上显示每个MPI操作花费了多长时间。

OpenSpeedshop对代码进行了非常详细的性能测量,突出显示了特别"昂贵"的行;它还具有MPI跟踪模式,该模式将按代码行识别MPI时间。 安装起来可能很棘手。

在频谱的商业部分,有来自德累斯顿工业大学的Vampir和Intel Trace Analyzer and Collector(ITAC(。Vampir使用开源VampirTrace库收集源代码级,MPI和OpenMP跟踪,该库还与PAPI集成,以提供详细的事件和计数器跟踪。VampirTrace的跟踪是开放跟踪格式的,除了Vampir之外,其他各种工具都可以读取。

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

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

但是还有其他更高级别的工具不仅可以提供报告,还可以实际提供建议。 TACC的perfexpert是一个基于命令行的工具,它进行许多测量并提供一些性能调整建议。Jülich的Scalasca使用大量源代码级检测重新编译代码,并且可以指出负载不平衡,特别是昂贵的MPI集合等。它还可以与吸血鬼集成以进行详细的痕量分析。

最新更新