그래서 특정 MPI 구현의 성능 테스트에 NAS 벤치 마크를 사용하려고합니다. 그래서 나는 fortran 코드를 컴파일하러 갔다. 그리고 나는 장벽을 때리고있다. 나는이 컴파일러 오류 얻을gfortran : 잘못된 사전 처리기 지시문 및 잘못된 문자/숫자가 아닌 문자 컴파일 오류
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이 여러 종류의 전처리를 시도하고 시도 할 수 있도록 모든 종류의 명령 행 인자를 시도했다. (대부분이 맹목적으로 행해졌 다. 나는 인정한다.) 이상한 것은 필자가 컴파일러에서 숫자가 아닌 문자/*에 오류가 있다는 것인데, 이는 내 코드에 아무 것도 없기 때문에 꽤 잃어 버렸습니다.
감사합니다.
사용중인 파일 접미사를 .f에서 .f90으로 변경하고 주석 줄 시작 문자를 c에서! –
어떤 MPI 구현을 사용하고 있습니까? – mgilson
'mpif.h'의 처음부터 몇 줄을 올릴 수 있습니까? –