Parallel processing Get-Wtime函数返回“***&引用;
我目前正在使用openMP将一些Fortran代码转换为并行代码。我试图使用Parallel processing Get-Wtime函数返回“***&引用;,parallel-processing,fortran,openmp,fortran77,intel-fortran,Parallel Processing,Fortran,Openmp,Fortran77,Intel Fortran,我目前正在使用openMP将一些Fortran代码转换为并行代码。我试图使用omp\u get\u wtime()来计算实际经过的时间,但它返回******。其他OpenMP功能也可以工作,但由于某些原因,它不能工作。我已经删除了计时器之间的所有代码,只是想得到一些不同的东西。删除finish,只显示start,会得到相同的结果。如果你知道我做错了什么,我将不胜感激 C$ USE OMP_LIB DOUBLE PRECISION START,FINISH START = OM
omp\u get\u wtime()
来计算实际经过的时间,但它返回******。其他OpenMP功能也可以工作,但由于某些原因,它不能工作。我已经删除了计时器之间的所有代码,只是想得到一些不同的东西。删除finish,只显示start,会得到相同的结果。如果你知道我做错了什么,我将不胜感激
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)
您的问题与
OMP\u GET\u 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
我试着把它改成那样,它仍然给我同样的输出:经过的时间*******你必须取消注释
使用OMP_LIB
操作符或添加双精度OMP_GET_WTIME
,否则,编译器将假定OMP\u GET\u WTIME
返回一个实数,并且不会生成正确的调用指令。对不起,我应该指定我正在使用带有-openmp选项的ifort进行编译,该选项告诉它读取以c$开头的任何内容。但是,我尝试了你的两个建议,取消注释和添加双精度,都没有效果。它会告诉你这个数字有多大。然后,您可以修改format语句,使其看起来更漂亮Always use tag,并仅在必要时添加版本,以区分您的问题是否具体。例如,您不能使用Fortran 2008,而只能使用Fortran 90。