I am looking at ways to improve performance on a large legacy code
base. Converting explicit for-loops doing standard linear algebra to
MKL looks like an option, but we sell (conventianal commercial software business model) to a global market and I am
concerned about maintaining the ability to run on older x86+x87 architecture platforms -- IE machines that do not have SSE2.
The platform requirements notes do not explicity say it won't work, and I
got my hopes up when I saw "celeron" listed as a supported CPU, but of
course there are many Celerons and the name currently describes a
machine based on the Core 2 architecture, according to wikipedia.
So, what's the take-home on this? Is the 32-bit MKL for windows
compiled to operate correctly all the way back to the PII (say) or am I
out of luck?
When you link with MKL, it will have code paths for various architectures, and in runtime, it will detect the CPU features and dispatch to the correct code path to take advantage of the platform your user runs the application.
There are some flags in Intel compilersto specify automatic dispatcher to various instruction setsor to some specificinstructions sets. Please see this article onIntel compiler options on this.