使用MPI

时间:2015-07-10 23:40:17

标签: c time parallel-processing mpi distributed-computing

每次运行MPI应用程序时,我都会进行不同的时间测量。我正在测量这样的时间:

MPIt1 = MPI_Wtime();

// do work

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

行为相同,有或没有MPI_Barrier(MPI_COMM_WORLD);。当然,每次可执行文件运行时,程序的结果都是正确的。

检查我得到的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$

编辑有很多次运行:

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. 我在一台计算机上运行程序,有4个核心。
  3. 我正在使用MPICH2

1 个答案:

答案 0 :(得分:1)

来自同事和Patrick我得出结论:

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