AVX2是久负盛名的x86系列处理器的又一个扩展, 将其SIMD矢量寄存器的宽度加倍到256位,然后 几十条新指令 . AVX2附带英特尔最新处理器微体系结构,代号为 哈斯韦尔 “. (它 官方名称是“第四代英特尔® 核心™ 处理器系列”)。 以及 AVX2,Haswell支持其他功能 帮助制造 您的代码运行得更快: FMA(Fused Multiply Add)和 尤其是位操作指令。 哈斯韦尔芯片出现在许多最新的个人电脑中, 笔记本电脑和平板电脑 (包括我们自己的 表面亲2)。
这额外的硅打开了一个新的领域 对于 编译器编写器——获取C++源代码 生成这些新指令, 使代码比以前运行得更快。 因此,我们将通过visualstudio更新的CTP2发布对AVX2的初始支持。
如何告诉VC++编译器生成 AVX2指令? 在命令行中,包括/arch:AVX2 switch. 如果你在里面工作 在visualstudio中,下面的屏幕截图显示了如何设置此选项。
是的,我们会的 添加启用AVX2的选项 在下拉菜单中: Project属性页:配置属性c/C++代码生成启用增强指令集 . 同样,我们将为的命令行用法添加简短的帮助 氯 /?
关于AVX2支持的更多要点:
编译器将生成包含AVX2和FMA指令的代码。 生成的二进制文件只能在支持这些指令的PC上运行。 如果在旧电脑上运行二进制文件,程序将崩溃,并且 显示如下弹出窗口:
如果您指定 /arch:AVX2 ,则它还启用 /arch:AVX –我们尽量保持 /拱门 开关“单调”: 序列中每个交换机的功能 {IA32、SSE、SSE2、AVX、AVX2} 包含了它的前身(不确定我是否解释得很好-清楚吗?)
在这个CTP中对AVX2的支持只是一个开始。 我们还有更多的工作要做! 从某种意义上说,这真的不应该让人感到意外, 编译器优化永远不会“完成”。 编译工程师 从一开始就一直在改进优化 在50年代中期由约翰·巴克斯在 FORTRAN I项目。 但值得强调的是,如果只是为了避开一点点的建议,说我们可以改进 部分AVX2代码
如果你想写代码检查 如果你正在运行的机器是“Haswell-capable”,那么你需要检查5 配置位,通过CPUID指令。 此英特尔页面 解释细节。
一如既往,我们对您的反馈很感兴趣。在下面发表你的评论。谢谢!