Search
Support & Downloads
All of Support
This Category
Software Products
Performance Tools for Software Developers
SSE generation and processor-specific optimizations continue


Can I combine the processor values and target more than one processor?
Yes. Using the auto processor dispatch technology you can combine the options to create a binary which potentially has a code path for every processor we support. For example on IA-32 processors you could potentially use:

/QaxKWNOPTS (-axKWNOPTS for Linux)
The resulting binary could potentially create 8 code paths for any particular loop, including one code path for a generic IA32 processor. The compiler will only generate code paths if there is a performance advantage in doing so. Because of this, it is very improbable that for any particular loop that you will get 8 code paths.
You can also combine processor dispatch with processor targeting options. For example you could potentially use:

/QaxT /QxN
This would potentially create 2 code paths: A code path which would be optimal for the Intel® Core™2 Duo Processor Family and a Code path would be optimal for the Intel Pentium 4 processor family.
Note: That as a path is created for each specific processor the resulting binary size may grow and effect the resulting performance. Using all 7 Processor targeting values – has a high potential to decrease the performance of your application.


What has changed in version 10.1 from previous releases with respect to these processor-targeting options?
Nothing.


What has changed in version 10.0 from previous releases with respect to these processor-targeting options?
The 10.0 compiler introduces S and O processor values. The 10.0 compiler has deprecated processor value B. Use processor value N to optimize binaries for the Pentium® M processor.
For Mac OS* X, the Intel Compiler now additionally supports Intel 64 Architecture. On Intel 64 systems running the Mac OS X, -xT is on by Default. For Mac OS* X the Intel Compiler supports -xT and -xS processor values.


What has changed in version 9.1 from previous releases with respect to these processor-targeting options?
The 9.1 compiler introduces the T processor value.
Beginning with the 9.1 version of the Compilers we released Fortran and C++ compilers for the Mac OS. The Intel Compiler for the Mac OS produces binaries optimized for the Intel Core microarchitecture, similar to the –xP option.


What has changed in version 9.0 from previous releases with respect to these processor-targeting options?
The N, B, and P processor values were added to provide better optimization for the Intel Pentium 4 processor, Intel Pentium M processor, and Intel Pentium 4 processor with support for Streaming SIMD Extensions 3 (SSE3), respectively.

The I (Pentium® Pro processors) and M (Intel Pentium II processors) options were deprecated starting with the 8.0 version of the Compiler. These options have been removed altogether in the 9.0 release.

Additionally, the processor-specific options, /Qx[N, B, P] (-x[N, B, P] on Linux) generate a run-time check to determine that the correct compatible Intel processor is used to prevent potential run-time faults that could otherwise occur with /QxK and /QxW.


How can I generate code that will run optimally on any IA-32 processor from Intel or AMD?
The compiler's default optimizations, /O2 (-O2 on Linux and Mac OS), generate very good code for all IA-32 processors. In addition /Qipo (inter-procedural optimization or IPO, -ipo on Linux and Mac OS), /Qprof_use (profile-guided optimization or PGO, -prof_use on Linux and Mac OS), and /O3 (high-level loop/memory optimizations, -O3 on Linux and Mac OS) can add additional performance for many types of applications./Qax (or -ax, -x on Linux and Mac OS) options can be used to generate specialized code for the target processor and Industry leading performance on generic processors.


Why is there a need for a run-time check of the processor in the /Qx[S,T,P,N] (-x[S,T,P,N] on Linux*), processor-specific options?
These options generate processor-specific instructions, such as SSE4 Vectorizing Compiler and Media Accelerators, SSSE3, SSE3, or SSE2 which may or may not be supported on other Intel and non-Intel processors. The compilers now provide a safeguard for the user to verify that the processor on which the application is running is indeed the processor that was targeted. A run-time check is inserted in the resulting executable that will halt the application if run on an incompatible processor. Without this run-time check, an application may crash with an illegal instruction fault or silently display unexpected behavior if run on an incompatible processor.


Does Intel test the Intel® Compilers on all processor types including non-Intel processors?
We cannot test on all processor and platform combinations, but we do perform extensive testing and benchmarking on many platforms that gives us confidence that our optimizations, like /O2, /O3, /Qipo, profile guided optimizations using /Qprof_use (-O2, -O3, –ipo, -prof_use on Linux and Mac OS), and other processor independent compiler options, work well on all Intel processors and Intel compatible processors. Processor values O, W andK are tested on various Intel and non-Intel processors. The processor-specific compiler options like [S, T, P, N] are validated only on those specific Intel processors. These options enable the latest and best optimizations to target Intel's latest and best processors.


Does Intel offer customer support for Intel Compilers used on non-Intel processors?
Yes. Intel will accept problem reports and fix issues reported on non_Intel processor-based systems.


If a user still has an Pentium® II processors to support, what is Intel's recommendation for using the Intel compilers?
With the 8.x and later compilers, we no longer have a Pentium® II processor specific option. It is our intention to move the compiler ahead and primarily support the latest processor families for processor-specific optimization. As mentioned above, all of the non-processor specific optimization like /O2, /O3, /Qipo, profile guided optimizations using /Qprof_use (-O2, -O3, –ipo, -prof_use on Linux and Mac OS), and other processor independent compiler options generate highly optimized code without taking advantage of Streaming SIMD Extensions (SSE). Also, using the processor-dispatch options will generate a generic code-path that will work on any IA-32 Intel architecture processor.


Where can I find more information on processor-specific optimizations?
Much of the technical details, option usage, and recommendations can be found in the white paper: "Optimizing Applications for the Intel® C++ and Fortran Compilers".

This applies to:
Intel® C++ Compiler for Linux*
Intel® C++ Compiler for Mac OS*
Intel® C++ Compiler for Windows*
Intel® Fortran Compiler for Linux*
Intel® Fortran Compiler for Mac OS*
Intel® Fortran Compiler for Windows*

Solution ID: CS-028403
Date Created: 10-Oct-2007
Last Modified: 12-Oct-2007
Back to Top