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