使用MPI应用程序运行perf
问题描述:
perf
是一个可以报告硬件和软件事件的性能分析工具。我试图用MPI应用程序运行它,以了解应用程序在每个内核中花费多少时间在数据传输和计算操作上。使用MPI应用程序运行perf
通常情况下,我会跑我的应用程序与
mpirun -np $NUMBER_OF_CORES app_name
它会催生几个核心或可能的几个节点。是否可以在顶部添加perf
?我试过
perf stat mpirun -np $NUMBER_OF_CORES app_name
但是,这个输出看起来像某种聚合的mpirun。有没有办法从每个核心收集perf类型的数据?
答
喜欢的东西:
mpirun -np $NUMBER_OF_CORES ./myscript.sh
可能与含myscript.sh工作:
#! /bin/bash
perf stat app_name %*
你应该有些参数添加到PERF调用产生不同的命名结果文件。
答
perf
可以遵循生成的子进程。要分析位于同一节点上的MPI进程,你可以简单地做
perf stat mpiexec -n 2 ./my-mpi-app
您可以使用perf record
为好。它将创建一个包含所有本地MPI进程的分析信息的文件perf.data
。但是,这不会允许您分析单个MPI等级。
要了解各个MPI行列信息,你需要运行
mpiexec -n 2 perf stat ./my-mpi-app
这将配置文件中的个别队伍,也将跨越多个节点工作。但是,这不适用于某些perf
命令,如perf record
。