gpt4 book ai didi

c++ - 微软 C++ 编译器 : how to disable auto-vectorization with/O2?

转载 作者:太空狗 更新时间:2023-10-29 21:05:48 24 4
gpt4 key购买 nike

如何在全局或特定 for 循环中禁用自动矢量化 (SSE2),而不恢复为 MSVS 2010 中的/Od?

我已经尝试了 Enable Enhanced Instruction Set 的所有 3 个可能选项,包括“未设置”,但都无济于事。

P. S. 奇怪的是,即使/Od 也无济于事。

最佳答案

对于特定的循环,您可以添加编译指示:

#pragma loop(no_vector) 

这实际上是documented on MSDN (虽然我是知道后才发现的。。)

如果不喜欢加pragma,可以选择用/favor:ATOM编译。这有点 hack,但它允许您禁用自动矢量化,而无需触及源代码,并且仍然可以优化速度。

或者有两种优化策略/O1“优化大小”和/Os“有利于小代码”。自动矢量化会生成更多代码,因此如果您针对大小进行优化,自动矢量化将被禁用。

我最近通过阅读 auto-vectorization cookbook 了解了这一切.请参阅“循环体规则”部分的最后一行。

免责声明:我还没有实际使用VS2012编译器(需要支持Win XP),所以我没有测试过这个。此外,编译器开关在 2013 年或之后的工作方式可能会有所不同。

关于c++ - 微软 C++ 编译器 : how to disable auto-vectorization with/O2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8901147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com