Floating-point Options for ItaniumŪ-based Systems

The following table lists options that enable you to control the compiler optimizations for floating-point computations on ItaniumŪ-based systems. The options listed here are not valid for IA-32 and IntelŪ EM64T systems.

Windows*

Linux*

Effect

/Qftz

-ftz

Use this option to flush denormal results to zero (0) when the application is in the gradual underflow mode. Flushing the denormal values to zero with this option may improve overall application performance.

Use this option if the denormal values are not critical to application behavior.

This option needs to be used only on the source that contains the  main program to turn the FTZ mode on. The initial thread, and any threads subsequently created by that process, will operate in FTZ mode.

  • This option is disabled when using -fp-model precise (Linux) or /fp:precise (Windows*). Combine this option with  with -fp-model precise (Linux) or /fp:precise (Windows) to flush denormal results to zero.

  • This option affects the result of abrupt underflow by setting the floating underflow to zero (0) and allowing the execution to continue. The option instructs the compiler to treat denormal values used in a computation as zero (0) so no floating invalid exception occurs.

  • Using the -O3 (Linux) or /O3 (Windows) option sets the abrupt underflow to zero (enables this option). At lower optimization levels, gradual underflow to zero (0) is the default behavior.

  • Gradual underflow to zero (0) can degrade performance. Using higher optimization levels to get the default abrupt underflow or explicitly setting this option improves performance. The option may improve performance on ItaniumŪ 2 processor, even in the absence of actual underflow, most frequently for single-precision code.

If this option produces undesirable results of the numerical behavior of your program, you can turn the FTZ mode off by using this option in the command line while still benefiting from other optimizations.

For more information, see the following topic:

  • -ftz compiler option

/QIPF-fma

-IPF-fma

Enables or disables the contraction of floating-point multiply and add/subtract operations into a single operation. Unless -fp-model strict (Linux) or /fp:strict (Windows) is specified, the compiler contracts these operations whenever possible. The -fp-model strict (Linux) or /fp:strict (Windows) option disables the contractions.

Use these options to override the default compiler behavior.

For example, a combination of -fp-model strict (Linux) or /fp:strict (Windows) and -IPF-fma (Linux) or /QIPF-fma (Windows) enables the compiler to contract operations:

icpc -fp-model strict -IPF-fma prog.cpp (Linux)

icl /fp:strict /QIPF-fma prog.cpp (Windows)

For more information about compiler option interaction, see the following topic:

/QIPF-fp-speculation

-IPF-fp-speculation

Sets the compiler to speculate on floating-point operations. This option is the default when -O0 (Linux) or /Od (Windows) is specified.

When using the -fp-model strict or -fp-model except (Linux) or /fp:strict or /fp:except options, the speculation mode is set to strict and cannot be overridden.  However, when using the -fp-model fast (Linux) or /fp:fast (Windows) option, you can use the -IPF-fp-speculation (Linux) or /QIPF-fp-speculation (Windows) option to restrict speculation.

For more information, see the following topic:

/QIPF-fp-relaxed

-IPF-fp-relaxed

Enables use of faster but slightly less accurate code sequences for math functions, such as the sqrt() function and the divide operation. As compared to strict IEEE* precision, using this option slightly reduces the accuracy of floating-point calculations performed by these functions, usually limited to the least significant digit.

When using any -fp-model (Linux) or /fp (Windows) option setting, this option is disabled: -no-IPF-fp-relaxed (Linux) or /QIPF_fp_relaxed- (Windows).

For more information, see the following topic:

/QIPF-flt-eval-method0

-IPF-flt-eval-method0

Directs the compiler to evaluate the expressions involving floating-point operands in the precision indicated by the variable types declared in the program.

For more information, see the following topic:

/QIPF-fltacc

-IPF-fltacc

Disables the compiler to apply optimizations that affect floating-point accuracy.

The ItaniumŪ compiler may re-associate floating-point expressions to improve application performance. Some options disable or restrict these floating-point optimizations.

You can use this option or the -mp (Linux) or /Op (Windows) option to improve floating-point accuracy, but doing so will disable other optimizations.

For more information, see the following topic: