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 に答える