问题:
float elapsed_time;
MPI_Barrier(MPI_COMM_WORLD);
elapsed_time = -MPI_Wtime();
// 省略主程序
elapsed_time += MPI_Wtime();
if (!id) {
printf("\nRun Time: %3.6f seconds\n", elapsed_time);
fflush(stdout);
}
会发现运行时间输出为负数,或者明明很快就输出了,却显示运行了几十秒。
解决
- 把float改成double类型就好了,MPI_Wtime返回的是double。如果用
float elapsed_time = (float)-MPI_Wtime();
,则会输出0。
float:
double: