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 /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
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
/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
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.
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.
There's no assurance that with a different BIOS you will see the same best 4 cores per CPU as I do.