Fortran中关于时间的函数有以下几个:
1、cpu_time:从开始计算到当前时刻的CPU使用时间,并行时,各个processor的CPU时间不同
2、mpi_wtime:为每个processor的WallTime,每个processor的时间不同
3、system_clock:为系统时间
4、data_and_time:系统时间,格式不同。
使用mpi_wtime()时,发现输出时间为0,比较奇怪,网上搜索一通,加上自己测试,发现最后是include mpif.h的问题,将其改为use mpi,问题解决。
原因分析:
include是直接将代码贴到当前位置,因此,用gfortran编译时,如果开启 -fdefault-real-8选项且不开启-fdefault-double-8,double会自动被调整为16位,而mpi_wtime()的结果类型为double,此时会出现精度不匹配的问题。
而如果直接使用use mpi,则不存在这个问题。
有兴趣的可以自己测测:
program tst
!use mpi
include 'mpif.h'
call mpi_init(ierr)
write(6,*) mpi_wtime()
call mpi_finalize(ierr)
-----------------------------------------------------------
本文来自博客园,作者:小厨房,转载请注明原文链接:https://www.cnblogs.com/erichf/p/11076381.html,否则视为侵权
如有疑问,请站内留言 或加 QQ:②⑨⓪②② ⑦③⑦⑨
-----------------------------------------------------------