4

我有一个 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 进程为此功能花费的总时间吗?如果不是,请告诉我如何正确获取它,谢谢!

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 回答