2016-08-16 18 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 recordを使用することができます

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

を行うことができます。すべてのローカルMPIプロセスのプロファイリング情報を含む単一のperf.dataファイルを作成します。ただし、個々のMPIランクをプロファイルすることはできません。

は、個々のMPIランクについての情報を見つけるために、あなたは

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

このプロファイルになる個々のランクを実行する必要があり、また、複数のノードにまたがって動作します。ただし、perf recordなどの一部のperfコマンドでは動作しません。

関連する問題