By: Bill Buros.
In the continuing journey of performance improvements with GCC, numerous development and performance teams recently hit an interesting milestone with results taking advantage of GCC compilers. The bottom-line difference between similar publishes of SPECint_rate_base2006 has broken the 10% difference milestone on Base measurements. These results are taking advantage of GCC-4.6.1-ibm-r176948 build.
- The bottom-line difference is calculated by taking the scores of 12 different programs and doing something called a "geometric mean" on those values, which means in the results below you can see significant differences in individual results, but overall those differences balance out.
We regularly use SPECint_rate_2006 (both base and peak) to measure and assess performance of the Power7 servers across the POWER line. These results are externally submitted, reviewed, and approved by SPEC.org. The summary of results are posted to the applicable "perfdata" pages on the IBM web sites. For example, many of the performance data results for the Power 730 Express server are consolidated on this page:
Over the years, the performance teams have taken advantage of the IBM XL compilers which are specially tuned for Power systems. The IBM XL compilers generally provided significant performance advantages over compilations and builds using GCC.
In parallel to the IBM XL teams, the Linux community has continued to make good strides with open-source compiler technology, and teams from IBM's Linux Technology Center have been focusing on continued Power tunings for GCC and the tuned libraries which are available for the operating systems.
With the latest Advance Toolchain 5.0 (with GCC 4.6.1), the "bottom-line" performance gap between the compilers has passed the 10% difference level as measured by SPECint_rate_base2006 results. Here are the URLs of two sets of results which were done on similar Power 730 servers running RHEL 6.
- Power 730 Express 12-core with GCC: http://www.spec.org/cpu2006/results/res2011q4/cpu2006-20110929-18638.html
- Power 730 Express 12-core with IBM XL: http://www.spec.org/cpu2006/results/res2011q2/cpu2006-20110411-15614.html
We take the "base" values of the runs and calculate the percentage differences. It's important to recognize that a "base" run means common compiler options are used across all of the components, which tends to mimic the more common customer usage of a standard set of compilation options.
- For more details on what SPECcpu2006 measures, see "What does SPEC CPU2006 measure?"
- For more details on the Integer based workloads used by SPECcpu2006, see: http://www.spec.org/cpu2006/CINT2006/
- Finally, for more details base and peak measurements, see "What is the difference between a base metric and a peak metric?"
What's noteworthy in the results is that it shows how much of a difference a compiler can really make. In several of the programs used, the IBM XL C/C++ compilers made a significant difference in the results (see 429.mcf - 44% slower with GCC and 462.libquantum - 47% slower with GCC). But across the other results, the compilers were fairly close in their results.
As usual with performance, your mileage will vary. Your results are dependent on a large number of variables. But here we have data that says for many customers, the GCC compilers available through the Advance Toolchain on RHEL and SLES can provide very good performance for Power servers.
In a future post, we'll discuss the process of closing this performance gap on the "peak metrics", which allow specialized compilation and build tunings for each individual program.
(edit'ed 11/08/2011 to highlight GCC 4.6.1 as the level used)