Community
cancel
Showing results for 
Search instead for 
Did you mean: 
149 Views

Intel C++ compiler vs Visual Studio compiler: performance study

Hi all,

I m using Intel Compiler on my machine and it works impressively fine. With finely set project settings, I have a ratio of around 2 between Intel compiler and Visual studio (2 times faster).

However, when the same dlls are used on another computer (a much faster machine, with different processor types), the ratio is very different, much smaller. I have now a ratio of 1.15 maximum.

My question is the following: is the intel compilation machine dependent?

Thanks a lot for your help

My command line:

C/C++

/c /O2 /Og /Ob2 /Ot /Qip /GA /I "D:\\Program Files\\Intel\\ComposerXE-2011\\compiler\\include"
/I "D:\\Program Files\\Intel\\ComposerXE-2011\\compiler\\lib\\ia32" /I "." /I
/I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "GEOMETRIC_EXPORTS" /D "_VC80_UPGRADE=0x0710"
/D "_WINDLL" /D "_MBCS" /GF /EHsc /MT /GS /Gy /arch:SSE3 /fp:fast /Fo"Release/" /Fd"Release/vc90.pdb" /W3
/nologo /Wp64 /Zi /Qopenmp /QaxSSSE3 /QxSSSE3 /Qparallel /Quse-intel-optimized-headers


LINKER

libiomp5mt.lib libf2c.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib
advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
/OUT:"..\\..\\..\\bin\\Release/processing.dll"
/INCREMENTAL:NO /nologo /MANIFEST /MANIFESTFILE:"Release\\processing.dll.intermediate.manifest"
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /NODEFAULTLIB:"vcomp" /NODEFAULTLIB:"libcmt" /TLBID:1 /DEBUG /PDB:"..\\..\\..\\bin\\Release/processing.pdb" /SUBSYSTEM:WINDOWS
/OPT:REF /OPT:ICF /DYNAMICBASE:NO /MACHINE:X86 /DLL
0 Kudos
3 Replies
gpseek
Beginner
149 Views

Here is my 2 cents:
1. That Intel complier 2 times faster than MSVC compiler is too impressive to be true. If the observation/measurement is vaild, then this could be a good indication that the program is not well written or not well optimized (complier independent opt).
2. Intel compiler is fast and beats MS one inalmost allof the cases. 15% speedup coming from a compiler for free (yes free of asm coding) is stillquite good.

JenniferJ
Moderator
149 Views

From the options used "/QaxSSSE3 /QxSSSE3", it will run the code path with SSSE3 optimization on a system with Intel processor with SSSE3 or higher. The default optimization is /arch:SSE2, so on other systems, it will run the code path optimized using SSE2.

Please see this article for some detail info about the processor targeting options.

Thanks,
Jennifer

TimP
Black Belt
149 Views

If you run OpenMP on a dual CPU platform, you may need to test KMP_AFFINITY settings coordinated with OMP_NUM_THREADS. For example, I have applications which get best performance on dual 6-core with hyperthreading disabled and
KMP_AFFINITY="proclist=[2-5,8-11],explicit"
OMP_NUM_THREADS=8

There's no assurance that with a different BIOS you will see the same best 4 cores per CPU as I do.