使用 MPI 进行不同的时间测量

Different time measurements with MPI

我每次 运行 我的 MPI 应用程序都得到不同的时间测量值。我是这样测量时间的:

MPIt1 = MPI_Wtime();

// do work

MPIt2 = MPI_Wtime();
MPIelapsed = MPIt2 - MPIt1;

行为是相同的,有或没有 MPI_Barrier(MPI_COMM_WORLD);。程序的结果当然是每次执行运行s.

都是正确的

检查我得到的 5x5 矩阵的极差:

0.00025 seconds // first run
0.10728 seconds // second run

此外,问题出现在较大的矩阵上,例如 2000x2000:

0.55996 seconds // first run
0.83657 seconds // second run

我是不是测错时间了?或者这是 MPI 的已知问题?请注意,时间仅从主节点报告。

我正在 运行 在另一台计算机上安装该程序,我已使用 ssh 登录。我记得当我真正坐在那台电脑前时,执行速度更快了。我是唯一登录的用户:

gsamaras@pythagoras:~/konstantis/cholesky$ who
gsamaras my internet connection
gsamaras@pythagoras:~/konstantis/cholesky$

EDIT 有很多 运行s:

1.6035
0.422967
1.53891
0.347107
0.761991
1.22824
0.934829
0.45618
0.794225
0.554099
1.09323
0.421858
0.621015
0.889867
0.613867
0.459144
2.02273
0.67689
2.2390
1.0448
0.751333

编辑_2

  1. 通过在 run.sh.
  2. 中多次调用程序,我得到了计时
  3. 我运行在一台机器上安装程序,4核。
  4. 我正在使用 MPICH2

我从一位同事和帕特里克那里得出结论:

  1. MPI 的启动时间可能有很大差异。
  2. 相对较小的执行时间不值得信赖,可能会有所不同 很多.