测量MPI通信成本的工具

22

我正在使用MPI,想要测量通信成本,以便将其与“处理”成本进行比较,例如需要多长时间通过n个进程来分发列表,然后将其与排序所需的时间进行比较。

有人知道可以测量这种通信成本的工具吗?(例如分发)

是否有类似于PAPI分析代码性能的用于MPI通信成本的工具?

提前感谢!

1个回答

28

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

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

IPM库相当容易构建,可以为您提供大量的MPI计数和时间,并生成漂亮的HTML文件。您提到了PAPI;如果可用,IPM也将集成PAPI计数器。我们在我们的中心经常使用这个工具,我认为这可以做到你想要的功能。如果您已经为MPI构建了动态库,甚至不需要重新编译就可以使用这个工具(mpiP也有这个属性)。

Jumpshot与MPICH2一起提供,但可以与任何MPI一起构建,实际上显示了每个MPI操作花费的时间轴。

OpenSpeedshop提供非常详细的代码性能测量,特别强调“昂贵”的行;它还有一个MPI跟踪模式,可以按代码行识别MPI时间。安装可能有些棘手。

在商业领域,Vampir来自德累斯顿技术大学和Intel Trace Analyzer和Collector(ITAC)。 Vampir使用开源VampirTrace库收集源级别、MPI和OpenMP跟踪,该库还与PAPI集成,提供详细的事件和计数器跟踪。 VampirTrace的跟踪文件是以可读格式存储的,可以被除了Vampir之外的其他工具读取。

ITAC是Intel Cluster Studio XE的一部分。 它主要设计用于与Intel MPI一起工作,并且与Vampir共享同样的祖先代码,提供几乎相同的功能。 其中一个不错的功能是包括的自动运行时MPI正确性检查器。

Allinea MAP是Allinea提供的MPI分析器,它提供性能分析和集成源代码浏览器,可以在源代码的每一行旁边显示通信/计算成本。它还显示性能信息的高级图表,包括内存、CPU指令和通信。

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


1
我会添加Vampir和Intel Trace Analyzer和Collector。它们都源自同一祖先,并且是MPI和OpenMP跟踪的性能分析的出色而复杂的工具,但不幸的是商业许可。Scalasca是开源的,但不太适合低级别的详细分析,因此它与Vampir集成(集成需要有效的Vampir许可)。XMPI曾经随LAM一起分发,但自从LAM与Open MPI合并以来就没有得到积极的开发。 - Hristo Iliev
是的,它们很棒;我主要没有添加它们是因为它们是商业软件。 你认为将其更改为社区维基并让每个人添加他们的建议会有用吗? - Jonathan Dursi
哇!非常感谢你们两个!只有一个问题,因为我更喜欢在我使用的集群中进行测量,而且我没有管理员权限,所以是否可以在我的目录中安装其中一个程序?除了已经安装的mpiP之外。IPM似乎可以在没有管理员权限的情况下安装,是吗?谢谢! - dx_mrt
@dx_mrt:我认为原则上所有这些软件都应该可以在没有管理员权限的情况下安装,除非ITAC使用内核模块进行某些操作。许多配置脚本假定你是root用户,并且正在写入/ usr或类似的目录,但通过安装到另一个前缀(例如,您的主目录),您应该没问题。IPM肯定没问题。 - Jonathan Dursi
我还将其设为维基,以便人们可以添加我错过的其他工具;我会让@HristoIliev添加ITAC / Vampir。 - Jonathan Dursi
@JonathanDursi:是的,它们是商业工具,但仍然是很好的工具(如果不是同类中最好的)。我通过网站许可证使用它们,猜想全球许多其他学生和研究人员可能也在他们的网站上使用它们。因此,感谢您将您的答案作为社区维基,我们不应该对访问SO的人做出任何假设,应该向他们展示所有选项并让他们选择。 - Hristo Iliev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接