Monday, May 18, 2009
Intel Atom and ICC 11.0
Author: Unknown
| at : 7:55 AM |
Category :
Intel Atom
|
This is a follow-up to a previous article about the benefit of using the Intel C/C++ Compiler with the Intel Atom processor. In the previously used version only undocumented Intel Atom specific optimizations were available. A few months ago Intel released ICC 11.0 with fully documented support for the Intel Atom through the new -xSSE3_ATOM compiler switch.You can download ICC 11.0 here. It's free for non-commercial use. Basic usage instructions can be found in the already mentioned article, while very detailed documentation is available directly from Intel here.The benchmarking application I selected is the Glaurung chess engine. The reason being its well commented Makefile which is already prepared for compiling with GCC and ICC. All it requires is to comment or uncomment a few lines. I used the standard compiling flags suggested for GCC, which after some testing also turned out to be the fastest, and only added -fast and the Intel Atom specific switch for each ICC version.I also tested the benefit of profiler guided optimization, which is supported by GCC and ICC. Basically what PGO does is compiling the code in two passes. First it adds some profiling code to the application. You must then run it and try to simulate a typical usage scenario while also using as many functions as possible. At the same time a very detailed log is being written, revealing how exactly the processor executes the code. In the next pass the compiler creates an optimized executable based on that log. If the compiler finds a function that was not used during the profiling process it complains about it and just creates unprofiled code for that function instead: position.cpp: warning #11503: Total routines 154, routines w/o profile info: 16. In a chess engine that's usually a function for a specific and rarely occuring position. There is probably no benefit in optimizing for such a rare case anyway.The numbers below are the nodes processed per second. t is the number of threads used, and p indicates enabled profiling.The benefit of using ICC 10.1 instead of GCC is 10-15%, which is consistent with the results of the previous benchmarks. Using ICC version 11.0 only gets you additional 2-5%, while using profiler guided optimizations adds 5-10% performance on top of that. So switching from an unprofiled GCC executable to a profiled ICC 11.0 executable results in about 25% performance gain. And just like in the previous benchmarks hyperthreading boosts the performance by about 30% regardless of the compiler or options used.
Subscribe to:
Post Comments (Atom)




0 comments:
Post a Comment