Continuing our theme of leveraging gcc for performance based workloads, here we point to a couple of recent Linpack results from the Top500 web site. The Top500 site tracks the results of Linpack runs from small single standalone servers all of the way up through the Top 500 supercomputers in the world. Naturally, the smaller results are buried in a very big table somewhere on the site, but the Top500 entries are listed separately.
What’s noteworthy in the two results below is that "gcc" was leveraged to build Linpack, linking in IBM’s premiere engineering and scientific libraries (IBM ESSL), and running with Linux on POWER7 servers.
The first result - from IBM Research - is listed in the Top500 June 2011 list at spot #192.
This Power 750 cluster was running Linux and was interconnected with 10GigE. If you view the details of the result, the Top500 site incorrectly lists the result as AIX based. Which OS is listed doesn’t really matter much in the grand scheme of things. We do verify that AIX, SLES, and RHEL provide very similar performance for workloads like this. For a Linux-based team of analysts and programmers, having AIX listed on a Linux result is just annoying. Many harumphs.
The second result is simply one of the numerous "standard" benchmarks which are often run on each new POWER7 server which helps to characterize the server's performance.
In this case, the Power 730 server has results listed for RHEL 6 running on a 12-core server running at 3.72GHz. The results were 333.1 when we used either gcc from the distro or with IBM’s XL Compilers.
For an explanation on how gcc was used to link with IBM ESSL is provided in this article. Since ESSL is itself built with IBM Fortran, there’s a couple of IBM XL Fortran runtime libraries needed, but there’s no requirement for the full IBM XL compilers for building the application.
Now, for full and correct disclosure, in this particular case, it doesn’t really matter which compiler is used to build Linpack (or similar applications) for performance. A very large percentage of the CPU time for Linpack is spent in the ESSL libraries themselves, which are provided pre-built. The point here is to demonstrate that gcc can easily be used with IBM ESSL for those workloads or applications where gcc might be the preferred compiler.