2

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

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

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

4

3 回答 3

2

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

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

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

编辑:

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

于 2011-09-14T05:16:31.237 回答
2

.NET 和 Visual Studio 编译器并不真正关心 AFAIK,因为我之前已经对此进行了实验,并且无论如何它吐出的程序集都是相同的。在 ICC 和 GCC 的情况下,必须区分 AMD 和 Intel(非​​常具体的东西)的某些调用路径,您可能一开始就不必担心。GCC 不如 ICC(英特尔 C 编译器)多,后者将尝试在英特尔上使用大量 SSE 和分支预测提示进行优化,但在可能不支持某些功能的 AMD 上留下一些提示。

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

于 2011-09-14T05:18:32.280 回答
1

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

于 2011-09-14T05:23:07.803 回答