测量MPI通信成本的工具
我正在使用MPI,我想测量通信成本,以便将其与“处理”成本进行比较,例如,需要多less时间通过n个进程分散列表,然后将其与多less进行比较我需要对它进行sorting。
有没有人知道任何工具来衡量这种沟通成本? (例如分散)
有没有什么可以测量MPI的通信成本,比如PAPI来分析代码的性能?
提前致谢!
是的,有很多这样的工具。 MPI定义了一个工具接口,允许其他库在您的MPI函数调用中自行插入,并进行计数,计时等。
一个非常小的MPI分析工具是mpiP – 它在代码中给出了一个非常简短的MPI活动总结。
IPM库相当容易构build,并为您提供大量的MPI计数和时间,并提供一个很好的HTML文件。 你提到PAPI; 如果有的话,IPM也将整合PAPI计数器。 我们经常在我们的中心使用这个,我认为这会做你喜欢的事情。 如果你已经用MPI的dynamic库构build你的程序,你甚至不需要重新编译来使用它(mpiP具有相同的属性)。
与MPICH2一起使用但可以用任何MPI构build的跳跃实际上在时间线上显示每个MPI操作花了多长时间。
OpenSpeedshop提供了非常详细的代码性能测量,突出显示了“昂贵”的代码行; 它也有一个MPI跟踪模式,它将通过代码行来识别MPI时间。 安装起来可能会很棘手。
在商业领域,有来自德累斯顿工业大学的Vampir和英特尔跟踪分析器和收集器(ITAC)。 Vampir使用开源的VampirTrace库收集源代码级,MPI和OpenMP的踪迹,该库也与PAPI集成,提供详细的事件和计数器跟踪。 VampirTrace的踪迹是开放的跟踪格式,除了Vampir之外,其他各种工具都可以读取。
ITAC是英特尔Cluster Studio XE的一部分 。 它主要用于与英特尔MPI协同工作,并与Vampir共享相同的祖先代码,提供或多或less相同的function。 其中一个很好的function是包含的自动运行时MPI正确性检查器。
Allinea MAP是Allinea的MPI分析器,它提供了一个集成的源代码浏览器的性能分析,该代码显示了源代码旁边的通信/计算成本。 它还显示高性能信息图,包括内存,CPU指令和通信。
但是还有其他更高层次的工具,不仅提供报告,而且实际上提供build议。 TACC的perfexpert是一个基于命令行的工具,它需要进行大量的测量并提供一些性能调整build议。 在Jülich 之外的Scalasca ,用许多源代码级别的仪器重新编译你的代码,并且可以指出负载不平衡,特别是昂贵的MPI集合等。它也可以与Vampir集成以进行详细的跟踪分析。