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

Which assembler does Intel Compiler icc10 & icc11 use?

kiran_nalawade
Beginner
407 Views

Hello friends ,

After a lot of observation , i am pretty much sure that icc compiler is faster than the GCC compiler.

It must be because of some default optimizations used by icc or the assembler its using. I want to

know what assembler / assembly language icc (and GCC) uses & which default optimizations make it faster than GCC.

0 Kudos
2 Replies
TimP
Honored Contributor III
407 Views

When icc uses an assembler, it is the same one used by the active gcc. icc doesn't even use all the features of gnu as which gcc does. The answer to the rest of your question depends on your application, which versions of gcc and icc, and which options are passed to them. Do you mean which optimizations, or which optimizaiton option groups?

icc defaults are mostly more aggressive than gcc defaults. For example, 'icc -ansi_alias' resembles 'gcc -O3 -ffast-math -fno-cx-limited-range -funroll-loops'. For gcc-4.2 you would add -ftree-vectorize, an option which isn't available in old versions of gcc. Even when you set 'icc -fp-model source -ansi_alias -fno-inline-functions', you frequently get more aggressive optimization than 'gcc -O2 -ftree-vectorize -funroll-loops'. As you have done "a lot of observation" (presumably including finding the documentation), you should already have the answers.

0 Kudos
kiran_nalawade
Beginner
407 Views
Thanks a lot tim. Actually i am studying different optimization techniques & thats why i am interested in such things.
"Lot of observation" meant running of programs on icc - gcc & comparing their run times. I haven't gone through much documentation yet.
If possible can you suggest me some?

Kiran
Quoting - tim18

When icc uses an assembler, it is the same one used by the active gcc. icc doesn't even use all the features of gnu as which gcc does. The answer to the rest of your question depends on your application, which versions of gcc and icc, and which options are passed to them. Do you mean which optimizations, or which optimizaiton option groups?

icc defaults are mostly more aggressive than gcc defaults. For example, 'icc -ansi_alias' resembles 'gcc -O3 -ffast-math -fno-cx-limited-range -funroll-loops'. For gcc-4.2 you would add -ftree-vectorize, an option which isn't available in old versions of gcc. Even when you set 'icc -fp-model source -ansi_alias -fno-inline-functions', you frequently get more aggressive optimization than 'gcc -O2 -ftree-vectorize -funroll-loops'. As you have done "a lot of observation" (presumably including finding the documentation), you should already have the answers.

0 Kudos
Reply