fp-model, fp
Controls the semantics of floating-point
calculations.
Syntax
Linux:
-fp-model
=
keyword
Windows:
/fp
:
keyword
Arguments
- keyword
- Specifies the semantics to be used. Possible values are:
- precise
- Disables optimizations that are not value-safe on floating-point data.
- fast[=1|2]
- Enables more aggressive optimizations on floating-point data.There is currently no difference betweenfast=1andfast=2.
- strict
- Enablesprecise, disables contractions, andenables pragmastdc fenv_access.
Default
- -fp-model=fastor/fp:fast
- The compiler uses more aggressive optimizations on floating-point calculations.
Description
This option controls the semantics of floating-point
calculations.
The floating-point (FP) environment is a collection of
registers that control the behavior of FP machine instructions and indicate the
current FP status. The floating-point environment may include rounding-mode
controls, exception masks, flush-to-zero controls, exception status flags, and
other floating-point related features.
Option
| Description
|
---|---|
-fp-model=precise or
/fp:precise | Tells the compiler to strictly adhere to
value-safe optimizations when implementing floating-point calculations. It
disables optimizations that can change the result of floating-point
calculations , which is
required for strict ANSI conformance .
These semantics ensure the reproducibility of
floating-point computations for serial code, including code vectorized or
auto-parallelized by the compiler, but they may slow performance. They do not
ensure value safety or run-to-run reproducibility of other parallel code.
Run-to-run reproducibility for
floating-point reductions in OpenMP* code may be obtained for a fixed number of
threads through the KMP_DETERMINISTIC_REDUCTION environment variable. For more
information about this environment variable, see topic "Supported Environment
Variables".
The compiler assumes the default floating-point
environment; you are not allowed to modify it.
|
-fp-model=fast[=1|2] or
/fp:fast[=1|2] | Tells the compiler to use more aggressive
optimizations when implementing floating-point calculations. These
optimizations increase speed,
but may affect the accuracy or reproducibility of
floating-point computations. There is
currently no difference between fast=1 and fast=2.
|
-fp-model=strict or
/fp:strict | Tells the compiler to strictly adhere to
value-safe optimizations when implementing floating-point calculations and
enables floating-point exception semantics. This is the strictest
floating-point model.
The compiler does not assume the default
floating-point environment; you are allowed to modify it.
|
The
-fp-model
and
/fp
options determine the setting for the maximum allowable
relative error for math library function results (max-error) if none of the
following options are specified:
- -fimf-accuracy-bits(Linux*) or/Qimf-accuracy-bits(Windows*)
- -fimf-max-error(Linux) or/Qimf-max-error(Windows)
- -fimf-precision(Linux) or/Qimf-precision(Windows)
Option
-fp-model=fast
(and
/fp:fast
) sets option
-fimf-precision=medium
(/Qimf-precision:medium
) and option
-fp-model=precise
(and
/fp:precise
) implies
-fimf-precision=high
(and
/Qimf-precision:high
). Option
-fp-model=fast=2
(and
/fp:fast2
) sets option
-fimf-precision=medium
(and
/Qimf-precision:medium
) and option
-fimf-domain-exclusion=15
(and
/Qimf-domain-exclusion=15
).
In Microsoft* Visual Studio, when you create a
Microsoft* Visual C++ project, option
/fp:precise
is set by default. It sets the floating-point
model to improve consistency for floating-point operations by disabling certain
optimizations that may reduce performance. To set the option back to the
general default
/fp:fast
, change the IDE project property for Floating Point
Model to Fast.
Product and Performance Information
|
---|
Performance varies by use, configuration and other factors. Learn more at
www.Intel.com/PerformanceIndex.
Notice revision #20201201
|
IDE Equivalent
Visual Studio:
Code Generation>Floating Point Model
Code Generation>Enable Floating Point Exceptions
Code Generation> Floating Point Expression Evaluation
Eclipse:
Floating Point >
Floating Point Model
Alternate Options
None