Fortran 和 MPI 的良好分析器

Posted

技术标签:

【中文标题】Fortran 和 MPI 的良好分析器【英文标题】:Good profiler for Fortran and MPI 【发布时间】:2013-08-14 00:55:46 【问题描述】:

对于包含 MPI 的 Fortran 代码库,您使用哪个分析器? gprof 似乎无法正常工作。 Sun Studio Analyzer 仅返回 C/C++ 系统调用的计时,并且不显示任何 fortran 函数。

【问题讨论】:

gprof 有什么问题?我用它来分析我的 MPI 程序没有问题。您是否使用-pg 编译了要分析的对象? 要求我们推荐或查找工具、库或最喜欢的非现场资源的问题对于 Stack Overflow 来说是题外话,因为它们往往会吸引固执己见的答案和垃圾邮件。 gprof 如果您的调用树很浅,并且对 I/O 所花费的时间视而不见(如果有的话),则可以。我使用this method,它与 Fortran 中的 GDB 一起使用。我关闭 MPI,进行性能调整,然后重新打开 MPI。 感谢@MikeDunlavey 的回答。 @IRO-bot:我已经正确使用了 gprof,但是从属日志和主日志输出不正确,或者大多数有时非常耗时的功能没有显示出来。所以我想看看是否还有其他选择。谢谢。 【参考方案1】:

有许多专门用于并行/MPI 程序的性能分析工具,例如:

Score-P,可与许多不同的分析工具一起使用,例如Cube, Vampir HPCToolkit 仅使用采样,因此您不必重新编译您的应用程序 Tau

起初它们可能没有那么简单易用,但它们为调查并行应用程序的性能提供了更多帮助。

【讨论】:

【参考方案2】:

当提问者说“gprof 似乎没有正常工作”时,也许他指的是 N MPI 进程可能会破坏 gmon.out 文件的事实。在这种情况下,(未记录的)GMON_OUT_PREFIX 环境变量可能会使 gprof 更有用:

$ export GMON_OUT_PREFIX=gmon.out
$ mpiexec -np 4 cpi

【讨论】:

【参考方案3】:

Allinea MAP 是一个简单明了但非常强大的分析器。

它旨在显示 Fortran、C 和 C++ MPI 应用程序中的性能问题,并且只需很少的努力即可开始并进行分析。

它是图形化的,并与源代码浏览器集成,可根据代码行显示性能,并能够分析不良 MPI 行为、不良工作平衡或不良矢量化。

我是产品背后的团队之一,所以有点偏见。它是商业的——网站上有评估许可证。

【讨论】:

【参考方案4】:

gprof 是 Fortran 和其他基于 GNU 的编译器的出色分析器。

【讨论】:

@CyrilDuchon-Doris 他可能读过,他的回答是对 SkypeMeSm 问题的反驳,因为他没有提供任何细节和解释“为什么 gprof 不能正常工作”【参考方案5】:

您可以使用Intel Trace analyzer 来配置 MPI 通信,使用Intel VTune 来获取单个 MPI 任务的配置文件。这两种软件都在英特尔网站上广泛记录。

【讨论】:

【参考方案6】:

我想再添加两个分析器:(1) mpiP 是一个轻量级分析器,可以产生文本输出,但只测量 MPI 函数。 (2) Scalasca - 这会产生一个复杂的输出,它也可以指向同步不平衡(延迟发送者/延迟接收者)(与不指向同步不平衡的 TAU 相反)。

【讨论】:

以上是关于Fortran 和 MPI 的良好分析器的主要内容,如果未能解决你的问题,请参考以下文章

通过 mpi_f08 模块和 gfortran 支持 MPI Fortran

发送/接收 MPI-Fortran-Java

MPI_SCATTER Fortran 矩阵(按行)

OpenACC + MPI Fortran 程序入门

英特尔 Fortran 编译器找不到模块“mpi”

单台 PC 上的 MPI Fortran 代码错误