ltrace を使用して mpi アプリケーションのライブラリ関数呼び出しを取得する方法を知りたいのですが、単純に ltrace が機能せず、mpirun が成功しません。何か案が?
質問する
244 次
1 に答える
5
以下を簡単に使用できるはずです。
$ mpiexec -n 4 -other_mpiexec_options ltrace ./executable
しかし、異なるランクからの出力がマージされるため、それは大きな混乱を引き起こします。より良いオプションは、 の出力をltrace
ランクごとに別のファイルにリダイレクトすることです。一部の MPI 実装では、ランクを簡単に取得できます。たとえば、Open MPI は世界ランクを環境変数にエクスポートしますOMPI_COMM_WORLD_RANK
。次のラッパー スクリプトが役立ちます。
#!/bin/sh
ltrace --output trace.$OMPI_COMM_WORLD_RANK $*
使用法:
$ mpiexec -n 4 ... ltrace_wrapper ./executable
これにより、ランクごとに 1 つずつ、合計 4 つのトレース ファイルが生成されます: trace.0
、trace.1
、trace.2
、およびtrace.3
。
MPICH およびそれに基づくその他の MPI 実装の場合は、Hydra PM エクスポートを使用しPMI_RANK
、上記のスクリプトを変更して にOMPI_COMM_WORLD_RANK
置き換える必要がありPMI_RANK
ます。MPI 実装の両方のファミリで動作するユニバーサル ラッパーを作成することもできます。
于 2014-09-05T07:54:42.907 に答える