4

MPI/OpenMP を使用したハイブリッド コードがあります。すべての MPI プロセスについて、特定の機能 (A としましょう) に費やされた時間を知りたいです。この関数は、OpenMP の do/for ループ内で呼び出され、その上にあるさまざまな関数によって非常に複雑な方法で呼び出されます (つまり、他の関数 B と C が、OpenMP の do/for ループ内にある A を呼び出している可能性があるとします)。 . 以下のようにする予定でした。

double A()
{
 time1 = MPI_Wtime();
 //compute result...
 //Note: inside this function there is no OpenMP or MPI calls...
 //      just pure computation of results...
 time2 = MPI_Wtime();
 printf("myRank=%d timeSpent=%f\n", myRank, (time2-time1));
 return result;
}

各 MPI プロセスごとのすべての時間の合計は、その MPI プロセスがこの関数に費やした合計時間になりますか? そうでない場合は、正しく取得する方法を教えてください。ありがとうございます。

4

2 に答える 2

1

車輪の再発明はしたくありませんし、MPI プロファイラーの再発明もしたくありません。それは難しいでしょう。

多くのクラスタ システムのメーカーから、非常に強力なツールが提供されています。たとえば、Cray マシンには通常、魔法を吐き出すCrayPat が付属しています。

さらに、このhttp://mpip.sourceforge.net/などのフリー ソフトウェアがあります。

于 2012-11-15T22:29:16.340 に答える
0

車輪を再発明するのではなく、TAUMPIPGprofなどのプロファイリング用にすでに構築されているプロ級のソフトウェアを使用することをお勧めします ...

あなたが始めるための適切なプレゼンテーションがあります

于 2012-11-15T22:27:03.667 に答える