MPI_Time 测量程序运行时间,输出错误时间

215 阅读1分钟

问题:

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: 在这里插入图片描述