This week I was asked if I knew any reason that a Sandy Bridge system would run slower than an approximately equivalent Westmere system. [I would not normally blog about such a thing, but this is the third time in the last two weeks that this type of question has surfaced!] The Intel Sandy Bridge processor contains new instructions collectively called Advanced Vector Extensions, or AVX. AVX provides up to double the peak FLOPS performance when compared to previous processor generations such as the Westmere. To take advantage of these AVX instructions, the application *must* be re-compiled with a minimum compiler version that supports AVX. With Intel that is the Intel Compiler Suite starting with version 11.1 and starting with version 4.6 of GCC. If an application has not been re-compiled with an AVX-aware compiler, the application with not be able to take advantage of these Sandy Bridge instructions. And it will probably run slower than previously seen on older processors, even including Westmere processors with higher frequencies. Let me say this another way: A Westmere executable will run fine on a Sandy Bridge system due to Intel’s commitment and extensive work to maintain backwards compatibility, but it will probably run slower with no errors or any indications of why. Furthermore, re-compiling “on” the Sandy Bridge processor, but using an older compiler (pre icc 11.1 or pre ggc 4.6) does not help. Remember, use the latest compiler on those shiny new platforms! For just one example of Westmere vs. Sandy Bridge performance improvements that are possible, please see our blog at: HPC performance on the 12th Generation (12G) PowerEdge Servers: http://dell.to/zozohn I know there are some codes for legal, certification or other reasons that cannot be “changed.” But I certainly hope that this policy has not bled over into not even being able to re-compile apps to take advantage of new technologies. For additional information on AVX and re-compiling applications, see: Intel Advanced Vector Extensions: http://software.intel.com/en-us/avx/ How To Compile For Intel AVX: http://software.intel.com/en-us/articles/how-to-compile-for-intel-avx/ Optimizing for AVX Using MKL BLAS: http://software.intel.com/en-us/articles/optimize-for-intel-avx-using-intel-math-kernel-librarys-basic-linear-algebra-subprograms-blas-with-dgemm-routine/ If you have comments or can contribute additional information, please feel free to do so. Thanks. --Mark R. Fernandez, Ph.D.
>But I certainly hope that this policy has not bled over into not even being able to re-compile apps to take advantage of new technologies.<
I would think the only place there would be a problem is with GCC. The last GCC GPL 2.0 licensed compiler was 4.21. The extensions didn't get incorporated until the newer GCC 4.6, which is under the new GPL 3.0 license. The place where they run into trouble is when they use a GPL 3.0 compiler to make a closed source product. OTOH, for commercial compilers or Clang, I don't see where there could be a problem.