AMD与英特尔处理器制作可执行文件

时间:2011-09-14 05:12:01

标签: intel processor amd-processor

可能是一个愚蠢的问题,但我遇到以下情况:

我们的开发机器目前都是64位基于Intel的系统,我们生产32位和64位版本的应用程序。我们还建议客户使用基于Intel的系统(而不是基于AMD的系统)。

现在,我们的IT经理想要购买一些新的开发系统,并降低他购买(64位)基于AMD系统的成本。 Visual Studio(2010)可能并不关心它运行在哪个处理器上,生成的代码可能是相同的,但只是为了确定:它对生成的可执行文件在哪个处理器上有所不同(AMD与英特尔)它建成了?

3 个答案:

答案 0 :(得分:2)

这取决于您如何配置它。我认为默认情况下,没关系。

如果您正在使用英特尔编译器,并且使用/QxHost/fast进行编译,那么它会很重要,因为它会清楚地查看您的系统以了解它的功能。

但是如果你指定/arch:XXX或其他任何选项,它将独立于你的机器。对于GCC,我认为默认情况下它不会查看主机。

编辑:

就像MKL这样的库来说,主机仍然不会影响编译哪个版本的MKL。通常,MKL的多个代码路径都被放入二进制文件中,并且CPU调度在运行时完成。

答案 1 :(得分:2)

.NET和Visual Studio编译器并不真正关心AFAIK,因为我之前已经对它进行了实验,无论如何,它吐出的程序集都是相同的。在ICC和GCC的情况下,某些呼叫路径必须针对AMD和英特尔(非常具体的事情)进行区分,您可能不应该担心这些问题。 GCC没有ICC(英特尔C编译器)那么多,它将试图通过对英特尔的大量SSE和分支预测提示进行优化,但在AMD上留下一些可能不支持某些功能的内容。

还有一些库依赖于特定的体系结构类型,例如Intel或AMD,但它们非常专业(我只看到它们用于研究目的),例如非常复杂的浮点并行库和复杂的线程库。

答案 2 :(得分:1)

没关系。从软件的角度来看AMD和英特尔是相同的芯片:基于x86的CPU。是的,他们可以有不同的扩展指令集。但是你可以说同属于不同代的英特尔CPU。 Visual Studio编译器将在所有这些上运行并生成相同的代码。