0

我目前正在使用 openMP 将一些 Fortran 代码转换为并行。我试图用来omp_get_wtime()计算实际经过了多少时间,但它返回 ******。其他 OpenMP 函数可以工作,但由于某种原因,它不能工作。我已经从计时器之间删除了所有代码,只是为了尝试获得不同的东西。删除完成,只显示开始会产生相同的结果。任何关于我做错了什么的想法都将不胜感激。

C$    USE OMP_LIB
   DOUBLE PRECISION START,FINISH

   START = OMP_GET_WTIME()
   FINISH=OMP_GET_WTIME()

   WRITE(OUT,850) FINISH-START
 850 FORMAT(25X,'ELAPSED TIME',I6)
4

1 回答 1

1

您的问题与功能无关OMP_GET_WTIME。相反,它源于这样一个事实,即I编辑描述符用于显示整数,而您使用的是双精度数。您应该使用浮点编辑描述符之一,例如F10.6

$ cat wtime.f
      USE OMP_LIB
      IMPLICIT NONE
      DOUBLE PRECISION START,FINISH

      START = OMP_GET_WTIME()
      CALL SLEEP(1)
      FINISH=OMP_GET_WTIME()

      WRITE(*,850) FINISH-START
 850  FORMAT(25X,'ELAPSED TIME',F10.6)
      END
$ ifort -openmp -o wtime.exe wtime.f
$ ./wtime.exe
                         ELAPSED TIME  1.000277
于 2013-07-10T15:07:23.673 回答