2

这是我非常简单的问题。使用 ICC,我知道可以使用 #pragma SIMD 来强制对编译器选择不进行矢量化的循环进行矢量化。GCC中有类似的东西吗?或者,是否有计划在未来的版本中添加此功能?

非常相关,用 Graphite 强制矢量化怎么样?

感谢您考虑我的要求法比奥

4

1 回答 1

1

只要允许 gcc 使用 SSE/SSE2/etc 指令,编译器通常会在意识到它“值得”时生成向量指令。像编译器中的大多数事情一样,这需要程序员的一些运气/计划/小心,以避免编译器认为“这可能不安全”或“这太复杂了,我无法弄清楚发生了什么”。但通常情况下,如果您使用的是相当现代的 gcc 版本(4.x 版本都应该这样做),那么它是成功的。

-msse您可以通过添加或-msse2(等用于以后的 SSE 扩展)使编译器使用 SSE 或 SSE2 指令。-msse2在 x86-64 中是默认的。

但是,我不知道您可以通过任何方式强制执行此操作。编译器要么会这样做,因为它很高兴这是一个好的解决方案,要么不会。

抱歉,无法回答有关 Graphite 的问题。

于 2013-02-06T16:33:49.037 回答