Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
公告
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
29286 讨论

WRF Compile Failure with IFORT 14.0.1, error #5145, Invalid blank/tab”

Thomas_T_
初学者
3,546 次查看

Howdy! 

I am unable to compile WRFv3.5.1 with IFORT 14.0.1 and ICC 8.0 on a Linux cluster running Fedora 19 with dual hex-core Sandy Bridge E5-2660 processors. The build includes szip-2.1, zlib-1.2.7, hdf5-1.8.11, netcdf-4.3.0 and netcdf-fortran-4.2, all generated (apparently without issue) with ifort and icc.  I'm trying to compile smpar (config options 18, 1).

When I use the CPP = -C -P flags,the compilation immediately generates a plethora of error (#5145, #5143 and #5082) messages.  Seems that the “\” and “*” characters in the first dozen or so lines of the .f files in the external directory ../WRFV3/external/esmv_time_f90/ are not being handled properly.  I’m getting messages such as those below.  I’ve not had this problem with earlier versions of WRF or IFORT.


When I tried the CPP = icpc -E flags, the compilation generates a very large number of different error (#7002, #6406, and #6460) messages. Most of these messages say  "Check INCLUDE paths" but I can't find anything wrong.  Obviously, I'm missing something very elementary............. 

Any suggestions would be greatly appreciated. Attached are my .cshrc,  log, and compile files…  Here are examples of the error messages produced by the two different compilation attempts.

CPP = -C -P compilation error messages

ESMF_Fraction.f(1): error #5082: Syntax error, found '/' when expecting one of: <LABEL> <END-OF-STATEMENT> ; BLOCK BLOCKDATA PROGRAM MODULE TYPE INTEGER REAL ...

/* Copyright (C) 1991-2012 Free Software Foundation, Inc.

^

ESMF_Fraction.f(16): error #5145: Invalid blank/tab#

   <http://www.gnu.org/licenses/>. */

----------------------------------^

ESMF_Fraction.f(20): error #5145: Invalid blank/tab

  include it implicitly at the start of every compilation. It must

-----------------------------------------------------------^

ESMF_Fraction.f(29): error #5143: Missing mandatory separating blank

/* wchar_t uses ISO/IEC 10646 (2nd ed., published 2011-03-15) /

--------------------------------^

ESMF_Fraction.f(30): error #5145: Invalid blank/tab

  Unicode 6.0. */

---------------^

ESMF_Fraction.f(32): error #5145: Invalid blank/tab

/* We do not support C11 <threads.h>. */

-------------------------------------^

ESMF_Base.f(1): error #5082: Syntax error, found '/' when expecting one of: <LABEL> <END-OF-STATEMENT> ; BLOCK BLOCKDATA PROGRAM MODULE TYPE INTEGER REAL ...

/* Copyright (C) 1991-2012 Free Software Foundation, Inc.

^

ESMF_Fraction.f(1): catastrophic error: Could not recover from previous syntax error

ESMF_Base.f(16): error #5145: Invalid blank/tab

   <http://www.gnu.org/licenses/>. */

----------------------------------^

ESMF_Base.f(20): error #5145: Invalid blank/tab

  include it implicitly at the start of every compilation. It must

-----------------------------------------------------------^

ESMF_Base.f(29): error #5143: Missing mandatory separating blank

/* wchar_t uses ISO/IEC 10646 (2nd ed., published 2011-03-15) /

--------------------------------^

ESMF_Base.f(30): error #5145: Invalid blank/tab

  Unicode 6.0. */

---------------^

ESMF_Base.f(32): error #5145: Invalid blank/tab

/* We do not support C11 <threads.h>. */

-------------------------------------^

compilation aborted for ESMF_Fraction.f (code 1)

make[3]: [ESMF_Fraction.o] Error 1 (ignored)

ESMF_Base.f(1): catastrophic error: Could not recover from previous syntax error

compilation aborted for ESMF_Base.f (code 1)

make[3]: [ESMF_Base.o] Error 1 (ignored)

 

 CPP = icpc -E compilation error messages


 

icpc -E -DNNN=1 -I../inc -DNL_get_ROUTINES nl_access_routines.F > yy1.f90

ifort -o nl_get_0_routines.o -c -i4 -O0 -fno-inline -fno-ip -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian  -I../dyn_em -I../dyn_nmm   -I/work/wrf/WRFV3/external/esmf_time_f90  -I/work/wrf/WRFV3/main -I/work/wrf/WRFV3/external/io_netcdf -I/work/wrf/WRFV3/external/io_int -I/work/wrf/WRFV3/frame -I/work/wrf/WRFV3/share -I/work/wrf/WRFV3/phys -I/work/wrf/WRFV3/chem -I/work/wrf/WRFV3/inc -I/usr/local/INTEL-v14.0/include   yy0.f90

ifort -o nl_get_1_routines.o -c -i4 -O0 -fno-inline -fno-ip -ip -fp-model precise -w -ftz -align all -fno-alias -FR -convert big_endian  -I../dyn_em -I../dyn_nmm   -I/work/wrf/WRFV3/external/esmf_time_f90  -I/work/wrf/WRFV3/main -I/work/wrf/WRFV3/external/io_netcdf -I/work/wrf/WRFV3/external/io_int -I/work/wrf/WRFV3/frame -I/work/wrf/WRFV3/share -I/work/wrf/WRFV3/phys -I/work/wrf/WRFV3/chem -I/work/wrf/WRFV3/inc -I/usr/local/INTEL-v14.0/include   yy1.f90
../inc/nl_config.inc(10): error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [MODULE_CONFIGURE]

  USE module_configure, ONLY : model_config_rec
------^
../inc/nl_config.inc(13): error #6406: Conflicting attributes or multiple declaration of name.   [MODEL_CONFIG_REC]
  run_days = model_config_rec%run_days
-------------^
../inc/nl_config.inc(13): error #6460: This is not a field name that is defined in the encompassing structure.   [RUN_DAYS]
  run_days = model_config_rec%run_days
------------------------------^
../inc/nl_config.inc(10): error #6580: Name in only-list does not exist.   [MODEL_CONFIG_REC]
  USE module_configure, ONLY : model_config_rec
-------------------------------^
../inc/nl_config.inc(17): error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [MODULE_CONFIGURE]
  USE module_configure, ONLY : model_config_rec
------^
../inc/nl_config.inc(20): error #6406: Conflicting attributes or multiple declaration of name.   [MODEL_CONFIG_REC]
  run_hours = model_config_rec%run_hours
--------------^
../inc/nl_config.inc(20): error #6460: This is not a field name that is defined in the encompassing structure.   [RUN_HOURS]
  run_hours = model_config_rec%run_hours
-------------------------------^
../inc/nl_config.inc(17): error #6580: Name in only-list does not exist.   [MODEL_CONFIG_REC]
  USE module_configure, ONLY : model_config_rec
-------------------------------^
../inc/nl_config.inc(24): error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [MODULE_CONFIGURE]
  USE module_configure, ONLY : model_config_rec
------^
../inc/nl_config.inc(27): error #6406: Conflicting attributes or multiple declaration of name.   [MODEL_CONFIG_REC]
  run_minutes = model_config_rec%run_minutes
----------------^
../inc/nl_config.inc(27): error #6460: This is not a field name that is defined in the encompassing structure.   [RUN_MINUTES]
  run_minutes = model_config_rec%run_minutes
---------------------------------^
../inc/nl_config.inc(24): error #6580: Name in only-list does not exist.   [MODEL_CONFIG_REC]
  USE module_configure, ONLY : model_config_rec
-------------------------------^

 Thank you,

twt

0 项奖励
3 回复数
TimP
名誉分销商 III
3,546 次查看

Did you find advice to tinker with CPP somewhere in the Intel whilte papers?

http://software.intel.com/en-us/articles/building-the-wrf-with-intel-compilers-on-linux-and-improving-performance-on-intel-architecture

I haven't built WRF for too long to recall how CPP was normally set.

IN general, for applications built with Fortran, if you want to second-guess the people who set up the build, possible choices might be

CPP = $(FC) $(FFLAGS) -E -P

that is, use the same Fortran, however the Makefile defines it, appending the pre-processing flags, or

CPP = gcc -traditional -E -x c

If you are building a parallel version, it's important to retain whatever parallel flags are expected when pre-processing.  If the Makefile is set up to use the MPI wrapper for pre-processing, it's probably important to preserve that.

0 项奖励
Andrea_P_2
初学者
3,546 次查看

Hi, Thomas did you solved this problem ? I have same problem with Fedora 19, WRF and intel xe_composer sp1 update 1 (intel64).

0 项奖励
Andrea_P_2
初学者
3,546 次查看

HelloThomas, as shown inthisdiscussion  http://forum.wrfforum.com/viewtopic.php?f=5&t=6086

I solved the problem by adding "-cpp"  to the two lines :

Original :
FORMAT_FIXED =-FI
FORMAT_FREE =-FR

Changed :

FORMAT_FIXED =-FI -cpp
FORMAT_FREE =-FR -cpp

I hope this help you.

Andrea

0 项奖励
回复