我有一个 MPI/OpenMP 的混合代码。我想知道每个 MPI 进程花费在特定功能上的时间是多少,比如说 A。该函数在 OpenMP do/for 循环内也被各种函数以非常复杂的方式调用(例如,一些其他函数,比如 B 和 C 可能正在调用 A,它也可能在 OpenMP do/for 循环内) . 我打算这样做如下:
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 进程为此功能花费的总时间吗?如果不是,请告诉我如何正确获取它,谢谢!