Pas*_*ndu 2 gcc compiler-optimization auto-vectorization
在 gcc 编译器中有没有办法只启用自动矢量化?我确实知道该-ftree-vectorize标志可以启用自动矢量化。但它至少需要-O2优化级别。有没有办法在不使用-O2优化标志的情况下启用自动矢量化?
提前致谢。
您实际上可以通过-ftree-vectorize结合获得不错的自动矢量化-O1,例如:Godbolt。
有了-O0,但是,量化代码不会产生,即使是很简单的例子。我怀疑 gcc 的树向量化器甚至没有被调用-O0,或者被调用并退出,但这必须在 gcc 源代码中进行验证。
通常,-O0和自动矢量化不能很好地混合。在编译器中,优化是分阶段进行的,每个优化阶段都为下一个优化阶段做好准备。为了发生自动矢量化,至少在非平凡的例子中,编译器必须事先执行一些优化。例如,包含跳转的循环通常不能被向量化,除非通过称为if-conversion的优化消除分支并用谓词指令替换- 产生一个扁平的代码块,可以更方便地向量化。
脚注 - 我看到了这个关于 GCC 自动向量化的精彩演示,您可能会觉得它很有趣 - 它很好地介绍了使用 gcc、编译器标志和基本概念进行自动向量化。
| 归档时间: |
|
| 查看次数: |
1299 次 |
| 最近记录: |