Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Setting FTZ mode using Intel Compiler Option.

Ha_Duy_Tuan
Beginner
698 Views

Have two conflictual points as below:

1. Can setting

The /Qftz- option used to disable FTZ mode.

It is descripts as these sentence "The -ftz and /Qftz options, when applied to the main program, set the FTZ and the DAZ hardware flags. The -no-ftz and /Qftz- options leave the flags as they are". Reference following link:https://software.intel.com/sites/products/documentation/doclib/iss/2013/compiler/cpp-lin/GUID-1659EAE1-583E-44EE-BDEA-7C68C46061C7.htm

 

2. Can’t setting

Can’t set FTZ mode by using Intel Compiler Option.

It is descripts as these sentence "I've said that IPP is built without this switch and FTZ bit is set to 1 in the IPP dllMailn() function - this behavior can't be changed in your app.".  Reference following link: https://software.intel.com/en-us/forums/topic/542786

 

So, can set FTZ mode using Intel Compiler Option or can’t?

If can set, why I doesn’t used /Qftz- option? The reason is version of IPP, isn’t it?

(I use: Visual Studio 2008 SP1, Intel Parallel Studio 2011)

0 Kudos
4 Replies
Igor_A_Intel
Employee
698 Views

Hello,

all above - #1 and #2 are correct. Statement #2 is related to a case when IPP is dynamically linked to your application: the setting of FTZ bit to "off" state in your application will be affected by IPP dll load procedure - at dll load stage IPP dllmain() procedure will be called, that sets FTZ to "on" state. And this behavior - behavior of IPP dllmain() - can't be changed by compiler switches during your application building. If you need/want FTZ=0 in your app - you should manually change its state after IPP dllmain() - using specific functions from run-time libraries or via explicit call to IPPAPI( IppStatus, ippSetFlushToZero, ( int value, unsigned int* pUMask ))

regards, Igor

0 Kudos
Ha_Duy_Tuan
Beginner
698 Views

Hi,

I understood statement #2.

I don't understand about statement #1. And how to use  /Qftz- option?

Could you tell me more details?

-------------------------------------------------------------------

I do the following steps:

- Open Configuration Properties > C/C++ > Command Line

- Add "/Qftz-" to field "Additional Options". Click OK

But when I rebuild the project, the output is

"1>icl: command line remark #10148: option '/Qftz-' not supported"

0 Kudos
Igor_A_Intel
Employee
698 Views

Hello,

in the past, for rather old Intel Composer/Compiler versions, there was a differentiation between XE and non-XE versions: the next switches were not supported by the non-XE version:

Qcomplex-limited-range

Qcxx-features

Qfnsplit

Qfp-port

Qfp-speculation

Qftz

Qgsym

Qinline-factor

Qinline-forceinline

Qinline-max-per-compile

Qinline-max-per-routine

Qinline-max-size

Qinline-max-total-size

Qinline-min-size

Qip-no-inlining

Qip-no-pinlining

Qipo-separate

Qipo-S

Qipo-c

Qkeep-static-consts

Qlong-double

Qmap-opts

Qmspp

Qnobss-init

Qopt-mem-bandwidth

Qopt-streaming-stores

Qpar-affinity

Qpar-adjust-stack

Qpar-num-threads

Qpar-threshold

Qpc

Qprec-div

Qprec-sqrt

Qprec

Qprefetch

Qprof-cdir

Qprof-data-order

Qprof-format-32

Qprof-func-order

Qprof-gen-sampling

Qprof-hotness-threshold

Qprof-hpi

Qprof-merge

Qprof-order

Qprof-src-dir

Qprof-src-root-cwd

Qprof-src-root

Qprof-use

Qprof-value-profiling

Qprofile-functions

Qprofile-loops

Qprofile-loops-report

Qrcd

Qscalar-rep

Qsimd

Qunroll

Qunroll-aggressive

Qvec-threshold

Qzero-initialized-in-bss-

For the recent versions there is no such differentiation anymore - therefore /Qftz- will work for you if you upgrade your tool set.

Regards, Igor.

0 Kudos
Ying_H_Intel
Employee
698 Views

Hi Ha Duy, 

I guess, you have know that the  Floating-point computations using these Intel® SSE and Intel® AVX instructions are accelerated when the FTZ and DAZ flags are enabled and thus the performance of the application improves.  Why did  you expect  to disable it /Qftz-

Regarding the can and can't , the first can is supposed to you set the flag..  but when call IPP dll,  it will do second setting . or we said, the flag is  reset, thus your first option don't effect. that is why cant' .   Unless as igor mentioned, you call runtime function or  ippSetFlushToZero explicitly again, so confirm what you hope to set. 

Best Regards,
Ying 

 

0 Kudos
Reply