Using the INTEL C compiler
Posted by software development on
April 2, 2009 – 12:59
in Post a comment
As already reported here and here, scientific code compiled with the Intel C compiler (icc) used to get a “free” 10-30% speed boost compared to code compiled with the Gnu compiler (gcc), thanks mostly to Intel’s vectorised math routines. gcc is now at version 4.4, and icc at version 11.1, and… this remains true, in both 32 and 64 bits. Therefore most AstrOmatic RPM packages are still compiled with icc. Two things should be mentioned:
- Using the latest version of the Intel C compiler has one drawback: older x86 processors (older than Pentium III) are not supported.
- The icc version used for compiling AstrOmatic packages has been patched to deactivate Intel CPU checks. As already shown here and later confirmed by Intel, the Intel math library happens to deactivate streaming SIMD instructions on non-Intel CPUs, which can result in a 10+% speed drop on AMD processors. The Swallowtail web site used to have a page on the subject, and to propose patches, but they do not seem available anymore. I hopefully kept copies which you can find for download below. These are Perl scripts written by M.D. Mackey. They seem to work for all icc versions from 7.x to 11.x. The first one is for executables compiled with icc, while the second one will patch the compiler libraries once for all.