VisualStudio C++编译器中的AVX2支持

AVX2是久负盛名的x86系列处理器的又一个扩展, 将其SIMD矢量寄存器的宽度加倍到256位,然后 几十条新指令 .  AVX2附带英特尔最新处理器微体系结构,代号为 哈斯韦尔 “.  (它 官方名称是“第四代英特尔® 核心™ 处理器系列”)。  以及 AVX2,Haswell支持其他功能 帮助制造 您的代码运行得更快:  FMA(Fused Multiply Add)和 尤其是位操作指令。  哈斯韦尔芯片出现在许多最新的个人电脑中, 笔记本电脑和平板电脑 (包括我们自己的 表面亲2)。

null

这额外的硅打开了一个新的领域 对于 编译器编写器——获取C++源代码 生成这些新指令, 使代码比以前运行得更快。  因此,我们将通过visualstudio更新的CTP2发布对AVX2的初始支持。

如何告诉VC++编译器生成 AVX2指令?  在命令行中,包括/arch:AVX2 switch.  如果你在里面工作 在visualstudio中,下面的屏幕截图显示了如何设置此选项。

图片[1]-VisualStudio C++编译器中的AVX2支持-yiteyi-C++库

是的,我们会的 添加启用AVX2的选项 在下拉菜单中: Project属性页:配置属性c/C++代码生成启用增强指令集 .  同样,我们将为的命令行用法添加简短的帮助 氯 /?

关于AVX2支持的更多要点:

编译器将生成包含AVX2和FMA指令的代码。  生成的二进制文件只能在支持这些指令的PC上运行。  如果在旧电脑上运行二进制文件,程序将崩溃,并且 显示如下弹出窗口:

图片[2]-VisualStudio C++编译器中的AVX2支持-yiteyi-C++库

如果您指定 /arch:AVX2 ,则它还启用 /arch:AVX –我们尽量保持 /拱门 开关“单调”:  序列中每个交换机的功能 {IA32、SSE、SSE2、AVX、AVX2} 包含了它的前身(不确定我是否解释得很好-清楚吗?)

在这个CTP中对AVX2的支持只是一个开始。  我们还有更多的工作要做!  从某种意义上说,这真的不应该让人感到意外, 编译器优化永远不会“完成”。  编译工程师 从一开始就一直在改进优化 在50年代中期由约翰·巴克斯在 FORTRAN I项目。  但值得强调的是,如果只是为了避开一点点的建议,说我们可以改进 部分AVX2代码

如果你想写代码检查 如果你正在运行的机器是“Haswell-capable”,那么你需要检查5 配置位,通过CPUID指令。 此英特尔页面 解释细节。

一如既往,我们对您的反馈很感兴趣。在下面发表你的评论。谢谢!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享