Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29235 Discussions

default compiler option 11.1.038 for -(no)gen-interface

Mike_Rezny
Novice
1,494 Views
Hi,
I have started using the Intel Fortran Compiler 11.1.038
What seems to be different from previous versions including the Beta releases of 11.1 is that the defult option seems to be -gen-inteface where for previous versions it was -nogen-interface

However, the man page and manuals for 11.1.038 still state -nogen-interface is the default.

I have done what I believe is a complete vanilla install.

Am I missing something?

regards
Mike Rezny
0 Kudos
1 Solution
Steven_L_Intel1
Employee
1,494 Views
Yes, this was a deliberate change and I apologize for not noting it in the release notes. The separate option for -gen_interfaces was an artifact of the implementation and it caused many users to not get the checking they desired with -warn all. You can still disable generation with -nogen-interface if you want (but leave the checking enabled.)

View solution in original post

0 Kudos
4 Replies
Xiaoping_D_Intel
Employee
1,494 Views
Quoting - mreznysgi.com
Hi,
I have started using the Intel Fortran Compiler 11.1.038
What seems to be different from previous versions including the Beta releases of 11.1 is that the defult option seems to be -gen-inteface where for previous versions it was -nogen-interface

However, the man page and manuals for 11.1.038 still state -nogen-interface is the default.

I have done what I believe is a complete vanilla install.

Am I missing something?

regards
Mike Rezny

Which platform are you using? I did a test and found no change:

$ ifort -V
Intel Fortran Intel 64 Compiler Professional for applications running on Intel 64, Version 11.1 Build 20090511 Package ID: l_cprof_p_11.1.038
Copyright (C) 1985-2009 Intel Corporation. All rights reserved.
$ls *.f90
t.f90
$ ls -l *.mod
ls: *.mod: No such file or directory

$ ifort -c t.f90
$ ls -l *.mod
ls: *.mod: No such file or directory

$ ifort -c -gen-interface t.f90
$ ls *.mod
foo__genmod.mod
$ls *.f90
foo__genmod.f90 t.f90

$
0 Kudos
Mike_Rezny
Novice
1,494 Views

Which platform are you using? I did a test and found no change:

$ ifort -V
Intel Fortran Intel 64 Compiler Professional for applications running on Intel 64, Version 11.1 Build 20090511 Package ID: l_cprof_p_11.1.038
Copyright (C) 1985-2009 Intel Corporation. All rights reserved.
$ls *.f90
t.f90
$ ls -l *.mod
ls: *.mod: No such file or directory

$ ifort -c t.f90
$ ls -l *.mod
ls: *.mod: No such file or directory

$ ifort -c -gen-interface t.f90
$ ls *.mod
foo__genmod.mod
$ls *.f90
foo__genmod.f90 t.f90

$
Ok, thanks for this information. I know what is happening now. Thegen-interfaces behaviouris caused by -warn all which in 11.1.038 now seems to imply -gen-interfaces. This wasn't the case in previous versions.

cheesehead:mrezny/Benchmark_1_Mk3.5_atmos/src> ifort -V
Intel Fortran Intel 64 Compiler Professional for applications running on Intel 64, Version 11.1 Build 20090511 Package ID: l_cprof_p_11.1.038
Copyright (C) 1985-2009 Intel Corporation. All rights reserved.
30 DAY EVALUATION LICENSE

ifort: NOTE: The evaluation period for this product ends on 2-sep-2009 UTC.

cheesehead:mrezny/Benchmark_1_Mk3.5_atmos/src> ifort -c -132 -openmp-report2 -fno-alias -ip -align all
-openmp -r8 -i8 -fpp -O3 -xT -fixed -static datard.f
cheesehead:mrezny/Benchmark_1_Mk3.5_atmos/src> ls *genmod*
ls: No match.


cheesehead:mrezny/Benchmark_1_Mk3.5_atmos/src> ifort -warn all -c -132 -openmp-report2 -fno-alias -ip -align all -openmp -r8 -i8 -fpp -O3 -xT -fixed -static datard.f
cheesehead:mrezny/Benchmark_1_Mk3.5_atmos/src> ls *genmod*
datard__genmod.f90 gradtop__genmod.f90 insoilveg__genmod.f90 trandata__genmod.f90
datard__genmod.mod gradtop__genmod.mod insoilveg__genmod.mod trandata__genmod.mod

0 Kudos
Mike_Rezny
Novice
1,494 Views
Quoting - mreznysgi.com
Ok, thanks for this information. I know what is happening now. Thegen-interfaces behaviouris caused by -warn all which in 11.1.038 now seems to imply -gen-interfaces. This wasn't the case in previous versions.

cheesehead:mrezny/Benchmark_1_Mk3.5_atmos/src> ifort -V
Intel Fortran Intel 64 Compiler Professional for applications running on Intel 64, Version 11.1 Build 20090511 Package ID: l_cprof_p_11.1.038
Copyright (C) 1985-2009 Intel Corporation. All rights reserved.
30 DAY EVALUATION LICENSE

ifort: NOTE: The evaluation period for this product ends on 2-sep-2009 UTC.

cheesehead:mrezny/Benchmark_1_Mk3.5_atmos/src> ifort -c -132 -openmp-report2 -fno-alias -ip -align all
-openmp -r8 -i8 -fpp -O3 -xT -fixed -static datard.f
cheesehead:mrezny/Benchmark_1_Mk3.5_atmos/src> ls *genmod*
ls: No match.


cheesehead:mrezny/Benchmark_1_Mk3.5_atmos/src> ifort -warn all -c -132 -openmp-report2 -fno-alias -ip -align all -openmp -r8 -i8 -fpp -O3 -xT -fixed -static datard.f
cheesehead:mrezny/Benchmark_1_Mk3.5_atmos/src> ls *genmod*
datard__genmod.f90 gradtop__genmod.f90 insoilveg__genmod.f90 trandata__genmod.f90
datard__genmod.mod gradtop__genmod.mod insoilveg__genmod.mod trandata__genmod.mod


Ok, I have the answer: I read the manual:

warn interfaces:
Tells the compiler to check the interfaces of all SUBROUTINEs called and FUNCTIONs invoked in your compilation against a set of interface blocks stored separately from the source being compiled.

The compiler generates a compile-time message if the interface used to invoke a routine does not match the interface defined in a .mod file external to the source (that is, in a .mod generated by option gen-interfaces as opposed to a .mod file USEd in the source). The compiler looks for these .mods in the current directory or in the directory specified by the include (-I) or -module option.

warn interfaces turns on the option gen-interfaces by default. You can explicitly turn it off with /gen-interfaces- on Windows and -no-gen-interfaces on Linux and Mac OS X.

This has changed since 11.0.074

warn interfacesTells the compiler to check the interfaces of all SUBROUTINEs called and FUNCTIONs invoked in your compilation against a set of interface blocks stored separately from the source being compiled.

The compiler generates a compile-time message if the interface used to invoke a routine does not match the interface defined in a .mod file external to the source (that is, in a .mod generated by option gen-interfaces as opposed to a .mod file USEd in the source). The compiler looks for these .mods in the current directory or in the directory specified by the include (-I) or -module option.

Mike
0 Kudos
Steven_L_Intel1
Employee
1,495 Views
Yes, this was a deliberate change and I apologize for not noting it in the release notes. The separate option for -gen_interfaces was an artifact of the implementation and it caused many users to not get the checking they desired with -warn all. You can still disable generation with -nogen-interface if you want (but leave the checking enabled.)
0 Kudos
Reply