SSE2在Visual C ++选项(x64)的(SSE2 option in Visual C++

2019-06-24 15:23发布

我已经添加了64位配置到我的C ++项目编译我的应用程序的64位版本。 一切看起来正常,但编译器会发出如下警告:

`cl : Command line warning D9002 : ignoring unknown option '/arch:SSE2'`

有SSE2优化真的不适用于64位的项目?

Answer 1:

似乎是所有64位处理器,具有SSE2。 由于编译器选项始终打开默认情况下无需手动开机。

从维基百科 :

SSE指令 :采用Intel的SSE和SSE2为核心的指令原AMD64架构。 在2005年4月加入SSE3指令SSE2取代的x87指令集的IEEE 80位精度与任一IEEE 32位或64位浮点数学的选择。 这提供了许多其他现代兼容的CPU浮点运算。 该SSE和SSE2指令也已经扩展到八个新的XMM寄存器操作。 SSE和SSE2是在现代x86处理器的32位模式下可用; 但是,如果他们在32位程序中使用,这些程序只能在系统与具有该功能的处理器工作。 这不是64位程序的问题, 因为所有的AMD64处理器已经SSE和SSE2,因此,使用SSE和SSE2指令代替的x87指令不降低设定在其x64程序可以运行的机器。 SSE和SSE2一般都比较快,复制大多数的传统的x87指令,MMX和3DNow功能!



Answer 2:

我明白,如果你选择SSE2,althought它仍然傻出现的警告。 如果选择/拱但是你仍然得到警告:AVX。 我敢肯定,它会得到固定的SP1。 它只是有点垃圾和烦恼。



Answer 3:

编译器选项/弓:AVX将无法在旧CPU的工作,因此你需要确保你的CPU支持它。 我就遇到了这个问题,当我不得不重新编译1.12 tensorflow包我的老至强CPU不支持。

我已经开机/弓:SSE2(如基里尔)公布以上,但恰好有同样的问题。 微软编译器会发出警告(INFO),这个选项将被忽略。

Command line warning D9002 : ignoring unknown option '/arch:SSE2'

从微软的文档我的理解是,此选项仅适用于x86和这没有意义,我要么。

但是MSDN上说:

/arch:SSE and /arch:SSE2 are only available when you compile for the x86 platform.

而上证所在x64反正使用。 因此,我刚才删除的选项。



文章来源: SSE2 option in Visual C++ (x64)