Building for the Atom

Building for the Atom

Hi, I'm developing on Windows.

What Intel C++ version do I need, and with what switches, to build specifically for the Atom? I want to take advantage of the Atoms properties the best I can. If there are no specific /Qx switch, which is the best choice?

Regards, Michael

16 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Does nobody really know? Not even someone from Intel?
Obviously, Atom is compatible with many other processors but which is the closest?

Dear Michael,

you will need the Intel C++ Compiler 10.1 or newer to specifically optimize for the Intel Atom Processor. The optimization switch /QxL enables optimizations specifically for the Atom Processor. Mainly these consits of modelling the instruction pipeline of the processor core so that in the code generation phase the assembly instructions are ordered such that they get fed into the pipeline in an ideal fashionfor the in-order scheduler and thus latencies get minimized.

Additionally the compiler of course agressively uses SSE3 instructions supported by the processor core to auto-paralllelize loops using SIMD processing / vectorization.

With the upcoming 11.0 compiler the option switch will be changed to /QxSSE3_ATOM and additional optimizations focussing on address generation for memory access and taking advanatge of Atom specific instructions are being implemented.

Thanks, Rob

P.S. Mike - if you are developing for Mobile Internet Devices i would recommend you have a look at the Intel C+= Software Development Tool Suite for MIDs at http://www.intel.com/software/products/mid as well as our associated community forum at

http://software.intel.com/en-us/forums/

Thanks, Rob

MAD
mueller:

With the upcoming 11.0 compiler the option switch will be changed to /QxSSE3_ATOM and additional optimizations focussing on address generation for memory access and taking advanatge of Atom specific instructions are being implemented.

Cool. Thanks! I do not belive the QxL switch is documented?

Would you estimate the 11.0 version is significantly better than 10.1 in terms of Atom optimization?

MAD
mueller:
P.S. Mike - if you are developing for Mobile Internet Devices i would recommend you have a look at the Intel C+= Software Development Tool Suite for MIDs at http://www.intel.com/software/products/mid as well as our associated community forum at

http://software.intel.com/en-us/forums/

Thanks, Rob

Thanks. It is likely we will switch to Linux instead of Windows for this project. We will however be using the D945GCLF motherboard, i.e a "desktop computer".

I guess this is not "MID"?

Hello. I am using the Intel C++ Compiler for Linux (icc) v10.1.018. I receive the following message when using the -QxL option:icc: command line warning #10006: ignoring unknown option '-QxL'I get the same message for the -Qipo option.Any one else have this problem? Any help would be appreciated.Thanks.

Quoting - jpburkeHello. I am using the Intel C++ Compiler for Linux (icc) v10.1.018. I receive the following message when using the -QxL option:icc: command line warning #10006: ignoring unknown option '-QxL'I get the same message for the -Qipo option.Any one else have this problem? Any help would be appreciated.Thanks.

Seems the -QxL and -Qipo options are for Windows. The options should be -xL and -ipo for Linux.

Quoting - michael@alienconnections.com

MAD mueller:

With the upcoming 11.0 compiler the option switch will be changed to /QxSSE3_ATOM and additional optimizations focussing on address generation for memory access and taking advanatge of Atom specific instructions are being implemented.

Cool. Thanks! I do not belive the QxL switch is documented?

Would you estimate the 11.0 version is significantly better than 10.1 in terms of Atom optimization?

Hi Michael,

no /QxL (Windows) and -xL (Linux) are not documented in the 10.x compilers. But they work ;-).

For 11.0 we added quite a few optimizations for memeory access address generation, better usage of some of the low level instructions and microcode depending on circumstances to optimzize latencies and the like. I cannot give you any benchmark data, bit yes I would expect another significant boost with the 11.x compiler

Quoting - michael@alienconnections.com

MAD mueller:P.S. Mike - if you are developing for Mobile Internet Devices i would recommend you have a look at the Intel C+= Software Development Tool Suite for MIDs at http://www.intel.com/software/products/mid as well as our associated community forum at

http://software.intel.com/en-us/forums/

Thanks, Rob

Thanks. It is likely we will switch to Linux instead of Windows for this project. We will however be using the D945GCLF motherboard, i.e a "desktop computer".

I guess this is not "MID"?

Hi Mike,

yep I am afraid this would not be a "MID".

Currently the EULA for the Interl C++ Software Development Tool Suite for Linux* OS Supporting Mobile Internet Devices ony allows development for calssical MID devices. We tentatively plan on opening this up for Netbooks an some other Intel Atom Processor based platforms with the next update release,

If you actually plan to develop for a desktop system I would however point you to our standard Intel C++ Compiler for Linux* products. http://www3.intel.com/cd/software/products/asmo-na/eng/compilers/277618.htm.

Thanks, Rob

Quoting - jpburke

Seems the -QxL and -Qipo options are for Windows. The options should be -xL and -ipo for Linux.

Yes - that is the case. Sorry, I should have specified that in my earlier reply.

Robert - Is there a way to further control what -xL optimizes? For example, if I wanted all the optimizations of -xLexcept SSE3 instruction generation - this would allow me to better assess the benefit of SSE3.This could be important for certain appilications as Isuspect SSE3 will consume more power when used.
Thanks

Also, Ihad an Atom hardware question. Is there a way to configure or limit the512KB L2 to256KB?
Thanks

Quoting - jpburke

Robert - Is there a way to further control what -xL optimizes? For example, if I wanted all the optimizations of -xLexcept SSE3 instruction generation - this would allow me to better assess the benefit of SSE3.This could be important for certain appilications as Isuspect SSE3 will consume more power when used.
Thanks

This seems like an ineffective use of your time. The main purpose of SSE3 is to vectorize C99 _Complex. When that happens, any increase in power consumption would be far outweighed by reduction in time to complete the job.

I don't know about Atom specifically, but reduction in cache availability on Intel platforms generally isn't possible by any means in software. Hardware probes may be able to do this. I'm fairly certain that power consumption trade-offs were taken into account in sizing the cache.

Hello - Not sure if this is the right thread for this question. I am using the GCC 4.2.3 compiler to compile applications for an Atom board from Lippert.What GCC compiler options should I use for Atom? Particularly interested inwhat the -march flag should be set to.

Thanks.

Quoting - jpburke

Hello - Not sure if this is the right thread for this question. I am using the GCC 4.2.3 compiler to compile applications for an Atom board from Lippert.What GCC compiler options should I use for Atom? Particularly interested inwhat the -march flag should be set to.

You might try the gcc-help mail list with this question. The answer may differ depending on whether you use 32- or 64-bit code. My guess is there's nothing specific for Atom, at least not as early as gcc 4.2.

Leave a Comment

Please sign in to add a comment. Not a member? Join today