Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何在Visual Studio 2015(针对C+;+;)中仅禁用SIMD自动矢量化优化?_Visual Studio_Compilation_Vectorization_Simd - Fatal编程技术网

Visual studio 如何在Visual Studio 2015(针对C+;+;)中仅禁用SIMD自动矢量化优化?

Visual studio 如何在Visual Studio 2015(针对C+;+;)中仅禁用SIMD自动矢量化优化?,visual-studio,compilation,vectorization,simd,Visual Studio,Compilation,Vectorization,Simd,我的问题只是如何在Visual Studio 2015中仅禁用SIMD自动矢量化优化(保留发布模式的其他优化),以便: 1) 整个项目正在编制中 2) 对于部分代码 在第一种情况下,我想学习如何在整个项目中禁用它。对于第二种情况,我想知道是否也可以对代码的特定区域执行此操作,类似于使用#pragma optimize(“,off)和#pragma optimize(“,on)时所有优化都可以执行的操作 P>这是对编译器的自动SIMD矢量化的一些手动优化代码的性能比较。 < P>在VisualC

我的问题只是如何在Visual Studio 2015中仅禁用SIMD自动矢量化优化(保留发布模式的其他优化),以便:

1) 整个项目正在编制中

2) 对于部分代码

在第一种情况下,我想学习如何在整个项目中禁用它。对于第二种情况,我想知道是否也可以对代码的特定区域执行此操作,类似于使用
#pragma optimize(“,off)
#pragma optimize(“,on)
时所有优化都可以执行的操作


<> P>这是对编译器的自动SIMD矢量化的一些手动优化代码的性能比较。

< P>在VisualC++自动矢量化器在使用<代码> /O2或/OX >时自动启用。 要查看它在做什么,请使用
/Qvec report:1
/Qvec report:2
构建

您可以使用
#pragma循环(无向量)

在保持标准优化处于启用状态的情况下,没有记录在案的方法全局禁用自动矢量器


有关详细信息,请参阅此、此和关闭SSE支持是不够的?您不能在x64上这样做,因为所有x64上都至少有SSE2。@Mysticial那么您的意思是我只能为x86编译吗?@MSalters您指的是指定
/arch:IA32
?@blipblop正确。Visual Studio不允许您在x64上禁用SSE2,因为所有x64处理器都有SSE2。因此,从他们的角度来看,在x64构建中添加禁用SSE2的功能是没有意义的。您的特定用例非常适合。另一种方法是使用没有自动矢量化的旧版本的VS。(VS2010 ish和早期IIRC)感谢您的回答。你在哪里找到上面的报价?我没有在你包含的任何链接中找到(也没有在食谱中)。也许你错过了一个有趣的参考?这不是一个引用,而是一个旁白。没有文档化的编译器开关可以禁用自动矢量器。