MPI / OpenMP混合代码中的定时单功能

时间:2012-11-15 22:18:11

标签: mpi openmp

我有一个带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流程为此功能花费的总时间?如果没有,请你能告诉我如何正确使用它,谢谢!

2 个答案:

答案 0 :(得分:1)

我们不想重新发明轮子,我们不想重新发明MPI探查器。那很难。

许多集群系统的制造商都提供了非常强大的工具。例如,Cray机器通常带有CrayPat spits out magic

此外还有免费软件,例如http://mpip.sourceforge.net/

答案 1 :(得分:0)

我建议不要重新发明轮子,而是使用一些专为级别分析而构建的专业级软件,例如TAUMPIPGprof ......

这是一个体面的presentation让你开始