【问题标题】:Run perf with an MPI application使用 MPI 应用程序运行 perf
【发布时间】:2016-08-16 10:11:16
【问题描述】:

perf 是一个性能分析工具,可以报告硬件和软件事件。我正在尝试使用 MPI 应用程序运行它,以了解应用程序在每个内核中花费了多少时间用于数据传输和计算操作。

通常,我会运行我的应用程序

mpirun -np $NUMBER_OF_CORES app_name

它会在多个核心或可能的多个节点上生成。是否可以在顶部添加perf?我试过了

perf stat mpirun -np $NUMBER_OF_CORES app_name

但是这个输出看起来像是某种 mpirun 的聚合。有没有办法从每个核心收集性能类型数据?

【问题讨论】:

    标签: linux performance parallel-processing


    【解决方案1】:

    类似:

    mpirun -np $NUMBER_OF_CORES ./myscript.sh
    

    可能与包含以下内容的 myscript.sh 一起使用:

    #! /bin/bash
    perf stat app_name %*
    

    您应该在 perf 调用中添加一些参数以生成不同命名的结果文件。

    【讨论】:

      【解决方案2】:

      perf 可以跟随衍生的子进程。要分析位于同一节点上的 MPI 进程,您可以简单地做

      perf stat mpiexec -n 2 ./my-mpi-app
      

      您也可以使用perf record。它将创建一个 perf.data 文件,其中包含所有本地 MPI 进程的分析信息。但是,这不允许您分析单个 MPI 等级。

      要查找有关各个 mpi 等级的信息,您需要运行

      mpiexec -n 2 perf stat ./my-mpi-app
      

      这将分析各个等级,并且还可以跨多个节点工作。但是,这不适用于某些perf 命令,例如perf record

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-22
        • 2021-02-11
        • 1970-01-01
        • 2013-03-31
        • 1970-01-01
        • 1970-01-01
        • 2012-08-16
        • 2012-05-15
        相关资源
        最近更新 更多