当前位置:  开发笔记 > 人工智能 > 正文

实际使用自动矢量化?

如何解决《实际使用自动矢量化?》经验,为你挑选了1个好方法。

有没有人利用gcc可以做的自动矢量化?在现实世界中(与示例代码相对)?是否需要重组现有代码才能占用优势?在任何可以通过这种方式进行矢量化的生产代码中是否存在大量案例?



1> Jack Lloyd..:

我还没有看到GCC或英特尔C++自动向量化任何东西,但非常简单的循环,即使给定的算法代码可以(并且在我使用SSE内在函数手动重写之后)被矢量化.

部分原因是保守 - 特别是当遇到可能的指针别名时,C/C++编译器很难向自己"证明"矢量化是安全的,即使你是程序员知道的那样.大多数编译器(明智地)更喜欢不优化代码而不是冒错误编译的风险.这是高级语言比C更有优势的一个领域,至少在理论上是这样的(我在理论上说,因为我实际上并不知道任何自动向量化的ML或Haskell编译器).

它的另一部分只是分析限制 - 我理解,大多数矢量化研究都与优化经典数值问题(流体动力学,比如说)相关,这是几年前(当时,在CUDA之间)大多数矢量机器的面包和黄油/ OpenCL,Altivec/SSE和STI Cell,各种形式的矢量编程在商业系统中广泛可用.

编写标量处理器的代码对于编译器进行矢量化很容易.令人高兴的是,您可以做很多事情来使编译器更容易理解如何对其进行矢量化,例如循环平铺和部分循环展开,即使编译器没有弄清楚如何矢量化它.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有