Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7956 Discussions

C++ for Linux, compiling for older CPU's and AMD's.

Eric_Simmons
Beginner
606 Views
We are using the latest version for linux Composer V-2011.1.107


Out product needs to run older systems and AMD CPUs, Intel compiler has some compiling flags to avoid using new instructions such as "SSE, SSE2, SSE3".

Question 1: what flags should be used whenusing Intel compilers, to build binaries that run on most CPU models?

Our product also uses the IPP library. IPP library ships with .a or .lib, and those library files may be built without the above flags, so they may contain newer instructions that are not available on old AMD CPUs. This may lead to non-runable scenarios on some CPUs.

Question 2: Is IPP library runnable on any CPU model, or does it have limitations for both the Linux and Windows versions?

Thanks in advance.
0 Kudos
1 Solution
levicki
Valued Contributor I
606 Views
A1:
/arch:

IA32

generate generic IA-32 architecture code for Intel Pentium III and compatible Intel processors. Disables any default or previously set extended instruction setting


So, if you want to compile only for generic IA32, you will have to use /arch:IA32 or whatever its Linux equivalent is.

A2:
The SSE2 optimization, and some obsolete SSE3 optimizations, (t7/m7 and w7 libraries) have been removed from this version [7.0] of the IPP library; these library optimizations will continue to be supported in the IPP 6.1 product. Additionally, the base 32-bit optimization of the library (px) has been compiled to require a processor with a minimum SSE2 architecture; which is consistent with the 64-bit base optimization (mx).

So, if you want to use IPP on CPUs that do not support SSE2 such as Pentium III or Athlon XP, you will have to use older IPP 6.1.

View solution in original post

0 Kudos
4 Replies
levicki
Valued Contributor I
607 Views
A1:
/arch:

IA32

generate generic IA-32 architecture code for Intel Pentium III and compatible Intel processors. Disables any default or previously set extended instruction setting


So, if you want to compile only for generic IA32, you will have to use /arch:IA32 or whatever its Linux equivalent is.

A2:
The SSE2 optimization, and some obsolete SSE3 optimizations, (t7/m7 and w7 libraries) have been removed from this version [7.0] of the IPP library; these library optimizations will continue to be supported in the IPP 6.1 product. Additionally, the base 32-bit optimization of the library (px) has been compiled to require a processor with a minimum SSE2 architecture; which is consistent with the 64-bit base optimization (mx).

So, if you want to use IPP on CPUs that do not support SSE2 such as Pentium III or Athlon XP, you will have to use older IPP 6.1.
0 Kudos
aazue
New Contributor I
606 Views
Hi
(for older CPU's)
I think problem is more simplified


Igor, (Hi), you have wrote ?
generate generic IA-32 architecture code for Intel Pentium III and compatible Intel processors.
Disables any default or previously set extended instruction setting
So, if you want to compile only for generic IA32, you will have to use /arch:IA32 or whatever
its Linux equivalent is.

Can you confirm that last compiler Intel(12) could be already installed
on the Pentium III , for using without advanced option ? .
I have an doubt...
Regards

0 Kudos
levicki
Valued Contributor I
606 Views
If you are asking whether latest version of the compiler itself can run on Pentium III, I am afraid that the answer is NO.

From Intel Parallel Composer 2011 update 1 release notes, System Requirements section:
A PC based on an IA-32 or Intel 64 architecture processor supporting the Intel Streaming SIMD Extensions 2 (Intel SSE2) instructions (Intel Pentium 4 processor or later, or compatible non-Intel processor)
For the best experience, a multi-core or multi-processor system is recommended
0 Kudos
aazue
New Contributor I
606 Views
Hi
about:
(If you are asking whether latest version of the compiler itself can run on Pentium III, I am afraid that the answer is NO.)
You're telling me nothing new,
you confirm what I already know

Also build an program with last version Intel compiler (Computer I7 950 O/S 86 installed ) that using OpenMp or thread library
in bottom level without any options SSXXX , and move binary result on Pentim III,
I have an serious doubt that It work correctly....

Is Strange... When you know that Intel compiler is only fronted GNU compiler origin supposed ameliorated under
O/S Linux, I not understand that this task is working perfectly operational with last level compiler GNU.

Choice this way for task not really necessary GCC 4.5.1 perfectly operational to work
installed under pentium III or i9xx if you want.



Regards
0 Kudos
Reply