そのため、特定のMPI実装でのパフォーマンステストにNASベンチマークを使用しようとしています。それで、私はFortranコードをコンパイルするために行きました、そして私は障壁にぶつかっています。このコマンドを入力してコンパイルするときはいつでも:
gfortran -O0 -Wall -I/home/stephen/trunk/include -I. -c ./TestData/common/timers.f
これらのコンパイラエラーが発生します:
Warning: mpif.h:2: Illegal pdreprocessor directive
Warning: mpif.h:3: Illegal preprocessor directive
Warning: mpif.h:4: Illegal preprocessor directive
Warning: mpif.h:5: Illegal preprocessor directive
Warning: mpif.h:6: Illegal preprocessor directive
Warning: mpif.h:7: Illegal preprocessor directive
Warning: mpif.h:8: Illegal preprocessor directive
Warning: mpif.h:9: Illegal preprocessor directive
Warning: mpif.h:12: Illegal preprocessor directive
Warning: mpif.h:13: Illegal preprocessor directive
Warning: mpif.h:14: Illegal preprocessor directive
Warning: mpif.h:2: Illegal preprocessor directive
Warning: mpif.h:3: Illegal preprocessor directive
Warning: mpif.h:4: Illegal preprocessor directive
Warning: mpif.h:5: Illegal preprocessor directive
Warning: mpif.h:6: Illegal preprocessor directive
Warning: mpif.h:7: Illegal preprocessor directive
Warning: mpif.h:8: Illegal preprocessor directive
Warning: mpif.h:9: Illegal preprocessor directive
Warning: mpif.h:12: Illegal preprocessor directive
Warning: mpif.h:13: Illegal preprocessor directive
Warning: mpif.h:14: Illegal preprocessor directive
mpif.h:1.1:
Included at ./TestData/common/timers.f:30:
/*
1
Error: Non-numeric character in statement label at (1)
mpif.h:1.2:
Included at ./TestData/common/timers.f:30:
/*
1
Error: Invalid character in name at (1)
mpif.h:1.1:
Included at ./TestData/common/timers.f:50:
/*
1
Error: Non-numeric character in statement label at (1)
mpif.h:1.2:
Included at ./TestData/common/timers.f:50:
/*
1
Error: Invalid character in name at (1)
make: *** [cg] Error 1
エラーのあるtimers.fコードは次のとおりです(30行目と50行目はインクルード行です)。
c---------------------------------------------------------------------
c---------------------------------------------------------------------
subroutine timer_start(n)
c---------------------------------------------------------------------
c---------------------------------------------------------------------
implicit none
integer n
include 'mpif.h'
double precision start(64), elapsed(64)
common /tt/ start, elapsed
start(n) = MPI_Wtime()
return
end
c---------------------------------------------------------------------
c---------------------------------------------------------------------
subroutine timer_stop(n)
c---------------------------------------------------------------------
c---------------------------------------------------------------------
implicit none
integer n
include 'mpif.h'
double precision start(64), elapsed(64)
common /tt/ start, elapsed
double precision t, now
now = MPI_Wtime()
t = now - start(n)
elapsed(n) = elapsed(n) + t
return
end
何か案は?私はgfortranのあらゆる種類のコマンドライン引数を試して、さまざまなタイプの前処理を実行できるようにしました(これらのほとんどは盲目的に行われたことを認めます)。私にとって奇妙なことは、コンパイラが私のコードのどこにも存在しない数字以外の文字/ *を誤っていることです。そのため、私はかなり迷っています。
ありがとう!