【问题标题】:How do I get meaningful results from gprof on an MPI code?如何在 MPI 代码上从 gprof 获得有意义的结果?
【发布时间】:2019-05-16 13:44:42
【问题描述】:

我正在优化 MPI 代码,并且正在使用 Gprof。 问题是我得到的结果是完全不合理的。我的工作流程如下:

  • 编译添加-pg作为编译标志的代码。

  • 运行代码mpirun -np Nproc EXEC.exe arg1 ... argN

  • 在可执行文件gprof EXEC.exe上运行gprof

这有什么问题?

【问题讨论】:

    标签: mpi hpc gprof


    【解决方案1】:

    运行gprof 的说明通常假定程序是串行的,或单进程但多线程的。

    要使用像 MPI 程序这样的多进程程序运行 gprof,您需要

    1. 确保每个进程都输出自己的文件
    2. 跨进程显式汇总文件
    3. 在结果上运行 gprof

    This blog postthese instructions at LLNL 是很好的起点:

    1. 设置记录不充分的GMON_OUT_PREFIX 环境变量,例如在 bash 中,export GMON_OUT_PREFIX=gmon.out- 在运行 mpiexec 命令之前(然后,根据环境,您可能必须运行 mpirun -x GMON_OUT_PREFIX -np Nproc EXEC.exe arg1 ... argN 以确保每个进程都有环境变量)
    2. 使用 gprof 本身收集和汇总结果,gprof -s EXEC.exe gmon.out-*
    3. gprof EXEC.exe gmon.sum(或者只检查单个文件,或使用gprof EXEC.exe gmon.out-12345gprof EXEC.exe gmon.out-* 一起检查文件)

    【讨论】:

      猜你喜欢
      • 2014-02-12
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2011-01-27
      • 1970-01-01
      • 2021-11-01
      相关资源
      最近更新 更多