連結已複製
The Intel compilers - present and future - don't have any AMD-specific support, but they should work fine on any Pentium-compatible processor. We believe that Intel Fortran is and will continue to be the highest performance Fortran compiler for any X86 architecture processor. Of course, "It runs better on Intel...", as the ad tagline goes.
CVF's AMD support is really rather limited, though it was effective - generation of Athlon data prefetch instructions only. Since current Athlon chips support the SSE instruction set, and I think AMD says they'll support SSE2 in future processors, the need for vendor-specific support seems less of an issue now than it was in the past.
I know that in the past, Intel has not officially supported their products on non-Intel processors, and I'm pretty sure the compilers aren't tested internally on non-Intel processors. But now that Intel wants to be the leading compiler vendor, that really has to change.
Steve
Does the latest Intel announcement (re: a new 64bit chip) mean that the Fortran compiler will also support the new chip?
If so, what is the timescale for the compiler? We already have an AMD 64 bit dual processor in-house, and are keen to try it with 64 bit Fortran programs.
Will the compiler-generated code look at fine-grained CPU target capabilities, e.g. SSE, SSE2 and SSE3, and generate code that way, or will it actually look and check specifically for Intel processors and Intel-specific submodels and collections of features?
The second way would be worse certainly as this means that even if AMD implements some Intel features (e.g. SSE2 is now on later Athlon processors) then the generated code will not use it.
I certainly think it's reasonable for Intel to not spend extra effort tuning its compilers for AMD's processors, but it is quite unethical to intentionally deny capabilities to AMD-using people despite AMD's efforts at 100% compatibility.
To be concrete: if I get an Athlon 64, and I compile with -axNP, will the generated code successfully use SSE2 instructions running on an Athlon 64, and SSE2 and SSE3 instructions on a modern Pentium?
If you use -axNP, the AMD processor will execute generic Pentiumcode and the Intel processors will run SSE2 and/or SSE3 code as appropriate. The B, N and P options test specifically for "GenuineIntel" CPUs. If you use -xN, for example (/QxN since this is the Windows forum), and you run the program on a non-Intel CPU, it will display an error message and exit. The alternative is that the program may operate incorrectly or die with an obscure error message.
My understanding is that Intel is developing an official Q+A document relating to this, and I'll point to it when it is available. If you have other technical questions about the compiler's behavior, I'll be glad to answer as best I can.