2016-08-16 171 views
1

perf是一個可以報告硬件和軟件事件的性能分析工具。我試圖用MPI應用程序運行它,以瞭解應用程序在每個內核中花費多少時間在數據傳輸和計算操作上。使用MPI應用程序運行perf

通常情況下,我會跑我的應用程序與

mpirun -np $NUMBER_OF_CORES app_name 

它會催生幾個核心或可能的幾個節點。是否可以在頂部添加perf?我試過

perf stat mpirun -np $NUMBER_OF_CORES app_name 

但是,這個輸出看起來像某種聚合的mpirun。有沒有辦法從每個核心收集perf類型的數據?

回答

0

喜歡的東西:

mpirun -np $NUMBER_OF_CORES ./myscript.sh 

可能與含myscript.sh工作:

#! /bin/bash 
perf stat app_name %* 

你應該有些參數添加到PERF調用產生不同的命名結果文件。

0

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