是的,有很多这样的工具。 MPI 定义了一个工具接口,允许其他库将自己插入到您的 MPI 函数调用中,并进行计数、计时等。
一个非常小的 MPI 分析工具是mpiP- 它给出了代码中 MPI 活动的非常简短的摘要。
The IPM库相当容易构建,并为您提供大量 MPI 计数和时间,并提供一个漂亮的 HTML 文件作为结果。你提到PAPI;如果可用,IPM 还将集成 PAPI 计数器。我们中心经常使用这个,我认为这会满足您的需求。如果您使用 MPI 动态库构建了程序,您甚至不需要重新编译即可使用它(mpiP 具有相同的属性)。
Jumpshot,它随 MPICH2 一起提供,但可以使用任何 MPI 构建,实际上在时间轴上显示每个 MPI 操作花费的时间。
开放加速商店提供非常详细的代码性能测量,突出显示特别“昂贵”的行;它还具有 MPI 跟踪模式,可通过代码行识别 MPI 时间。安装起来可能很棘手。
在频谱的商业部分有Vampir来自德累斯顿工业大学和英特尔跟踪分析器和收集器 (ITAC)。 Vampir 使用开源 VampirTrace 库收集源级、MPI 和 OpenMP 跟踪,该库还与 PAPI 集成以提供详细的事件和计数器跟踪。 VampirTrace 的跟踪采用开放跟踪格式,除了 Vampir 之外,还可以由各种其他工具读取。
ITAC 是以下组织的一部分英特尔 Cluster Studio XE。它主要设计用于与 Intel MPI 配合使用,并与 Vampir 共享相同的祖先代码,提供或多或少相同的功能。其出色的功能之一是包含自动运行时 MPI 正确性检查器。
阿利内亚地图是 Allinea 的 MPI 分析器,它通过集成源浏览器提供性能分析,该浏览器在源代码的各行旁边显示通信/计算成本。它还显示性能信息的高级图表,包括内存、CPU 指令和通信。
但还有其他更高级别的工具,它们不仅提供报告,而且实际上提供建议。 TACC 的 perfexpert 是一个基于命令行的工具,它进行大量测量并提供一些性能调整建议。Scalasca来自 Jülich,使用大量源代码级工具重新编译您的代码,并可以指出负载不平衡,特别是昂贵的 MPI 集合等。它还可以与 Vampir 集成以进行详细的跟踪分析。