我将一些MatLab代码导出到C并使用Visual Studio 2013(cl.exe)进行编译。如果它有帮助我可以切换到VS2015。矢量化对我来说非常重要。如果我使用/ O2,它会生成SSE2代码以及一些回退代码,以防它在非SSE2 CPU上执行。如果我将体系结构更改为参数AVX2,它会生成该代码和AVX代码以及SSE2代码和回退代码吗?这就是我想要的 - 在任何CPU上尽可能快地运行。或者,如果CPU不支持AVX2,它会直接进入后备代码吗?
答案 0 :(得分:0)
根据Visual C++ Team Blog,编译器不会这样做:
编译器将生成包含AVX2和FMA指令的代码。生成的二进制文件仅在支持这些指令的PC上运行。如果在旧PC上运行二进制文件,程序将崩溃,并显示如下弹出窗口: