我正在使用MPI,想要测量通信成本,以便将其与“处理”成本进行比较,例如需要多长时间通过n个进程来分发列表,然后将其与排序所需的时间进行比较。
有人知道可以测量这种通信成本的工具吗?(例如分发)
是否有类似于PAPI分析代码性能的用于MPI通信成本的工具?
提前感谢!
我正在使用MPI,想要测量通信成本,以便将其与“处理”成本进行比较,例如需要多长时间通过n个进程来分发列表,然后将其与排序所需的时间进行比较。
有人知道可以测量这种通信成本的工具吗?(例如分发)
是否有类似于PAPI分析代码性能的用于MPI通信成本的工具?
提前感谢!
是的,有很多这样的工具。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集成进行详细的跟踪分析。