You can adjust the IntelŪ Fortran Compiler's optimization for a particular application by experimenting with memory and interprocedural optimizations.
Enter the -Qoption option with the applicable keywords to select particular inline expansions and loop optimizations. The option must be entered with an -ip or -ipo specification, as follows:
-ip[-Qoption,tool,opts]
where tool is Fortran (f) and opts are -Qoption specifiers (see below). Also refer to Criteria for Inline Function Expansion to see how these specifiers may affect the inlining heuristics of the compiler.
For more information about passing options to other tools, see (/Qoption,tool,opts).
If you specify -ip or -ipo without any -Qoption qualification, the compiler does the following:
Expands functions in line
Propagates constant arguments
Passes arguments in registers
Monitors module-level static variables.
You can refine interprocedural optimizations by using the following -Qoption specifiers. To have an effect, the -Qoption option must be entered with either -ip or -ipo also specified, as in this example:
-ip -Qoption,f,ip_specifier
where ip_specifier is one of the -Qoption specifiers described in the following table:
-ip_args_in_regs=0 |
Disables the passing of arguments in registers. By default, external functions can pass arguments in registers when called locally. Normally, only static functions can pass arguments in registers, provided the address of the function is not taken and the function does not use a variable number of arguments. |
-ip_ninl_max_stats=n |
Sets the valid number of intermediate language statements for a function that is expanded in line. The number n is a positive integer. The number of intermediate language statements usually exceeds the actual number of source language statements. The default value for n is 230. |
-ip_ninl_min_stats=n |
Sets the valid min number of intermediate language
statements for a function that is expanded in line. The number n is a positive
integer. The default value for ip_ninl_min_stats
is: |
-ip_ninl_max_total_stats=n |
Sets the maximum increase in size of a function, measured in intermediate language statements, due to inlining. The number n is a positive integer. The default value for n is 2000. |
The following command activates procedural and interprocedural optimizations on source.f and sets the maximum increase in the number of intermediate language statements to five for each function:
ifort -ip -Qoption,f,-ip_ninl_max_stats=5 source.f