AMD vs. Intel processor to make executables [closed]
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this questionProbably a stupid question but I am in the following situation:
our development machines are currently all 64-bit Intel-based systems, where we produce 32-bit and 64-bit versions of our applications. We also recommend our customers to use Intel-based systems (as opposed to AMD-based systems).
Now our IT-manager wants to buy some new development systems and to cut the costs he is looking into buy开发者_如何学JAVAing (64-bit) AMD-based systems. Visual Studio (2010) probably doesn't care which processor it is running on, and the generated code is probably the same, but just to be sure: does it make any difference for the generated executable on which processor (AMD vs. Intel) it is built?
The .NET and Visual Studio compilers don't really care AFAIK since I have experimented with this before and the assembly that it spits out is the same no matter what. In the case of ICC and GCC there are certain callpaths that must be differentiated for AMD and for Intel (very specific things) which you probably shouldn't worry about to begin with. GCC not as much as ICC (Intel C Compiler) which will attempt to optimize with a lot of SSE and branch prediction hints on Intel but leave some out on AMD which may not support certain features.
There are also libraries out there that rely on specific architecture types such as Intel or AMD but they are very specialized (and I have only seen them used in research purposes) such as very complicated floating point parallel libraries and complex threading libraries.
It depends on how you configure it. I think by default, no it doesn't matter.
If you're using the Intel Compiler and you compile with /QxHost
or /fast
, then it will matter since it clearly looks at your system to see what it's capable of.
But if you specify /arch:XXX
or whatever option, it will be independent of your machine. For GCC, I think by default it doesn't look at the host machine.
EDIT:
As as far as libraries like MKL go, the host machine will still have no effect on which version of the MKL is compiled. In general multiple code-paths of the MKL are put into the binary regardless and the CPU-dispatching is done at run-time.
It doesn't matter. From the software point of view AMD and Intel are the same chips: x86-based CPUs. Yes, they can have different extended instruction sets. But the same you can say about Intel CPUs belonging to the different generations. Visual Studio compiler will run on all of them and produce the same code.
精彩评论