使用GCC/Clang/ICC/etc
-march=skylake
-march=native
如何使用MSVC实现这些功能?
hpcdzsge1#
微软的编译器将其分为两个独立的区域。一个是生成特定于特定指令集的代码,这在不支持该指令集的CPU上无法工作。这福尔斯其-arch:标志。x64编译器在这里只支持两种变体:AVX和AVX2(或无标志,支持最高达SSE 2)。x86版本的编译器为旧的指令集扩展(例如SSE)添加了几个标志,但我怀疑你是否还关心这些。另一类是生成可以在许多架构中的任何一个上工作的代码,但是更倾向于一个架构。这由-favor交换机支持,它支持ATOM,AMD 64,INTEL64和“混合”(基本上意味着不要以牺牲其他架构为代价来支持一个架构)。它没有任何(记录在案的)标志,如有利于Skylake与(说)Haswell或Broadwell虽然。
-arch:
-favor
1条答案
按热度按时间hpcdzsge1#
微软的编译器将其分为两个独立的区域。一个是生成特定于特定指令集的代码,这在不支持该指令集的CPU上无法工作。这福尔斯其
-arch:
标志。x64编译器在这里只支持两种变体:AVX和AVX2(或无标志,支持最高达SSE 2)。x86版本的编译器为旧的指令集扩展(例如SSE)添加了几个标志,但我怀疑你是否还关心这些。另一类是生成可以在许多架构中的任何一个上工作的代码,但是更倾向于一个架构。这由
-favor
交换机支持,它支持ATOM,AMD 64,INTEL64和“混合”(基本上意味着不要以牺牲其他架构为代价来支持一个架构)。它没有任何(记录在案的)标志,如有利于Skylake与(说)Haswell或Broadwell虽然。