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)