【发布时间】:2014-09-17 17:08:56
【问题描述】:
有没有办法只为代码的某些部分启用矢量化,比如 pragma 指令?基本上只有在编译代码的某些部分时才启用-ftree-vectorize? Pragma simd 例如不适用于 gcc...
原因是从基准测试中我们看到,使用 -O3(启用矢量化)的时间比使用 -O2 时更差。但是我们希望编译器尝试对代码的某些部分进行矢量化循环。
我可以使用的一种解决方案是将编译器指令限制为一个文件。
【问题讨论】:
-
通常矢量化应该加速您的代码,如果它已被应用。你确定吗?您是如何发现它减慢了代码速度的?
-
@black 我们正在谈论一个大项目,但是,没有太多要矢量化的地方。 -O3 引入了一些开销,在某些情况下会生成较慢的代码stackoverflow.com/a/19985801/2436175。在我们的时间基准测试中就是这种情况。全局启用树向量化具有相同的风险,而我可以很好地猜测代码的哪一部分值得要求编译器进行向量化。