【问题标题】:What is meant by too many BB's in loop, can't vectorize?循环中的BB太多,无法矢量化是什么意思?
【发布时间】:2011-08-20 14:03:07
【问题描述】:

简而言之,情况是这样的:我一直在尝试编译带有选项gcc -O2 -ftree-vectorize -msse4 -ftree-vectorizer-verbose=10 -march=core2 -g -c 的C 代码。对于代码中的某些嵌套 for 循环结构 gcc 抱怨

未矢量化:循环中的 BB 过多。

对于我对编译器和矢量化的理解非常有限,我深表歉意。

一些初始搜索在 gcc 的邮件列表中为我获取了这个结果,其中说 BB 是构建块的首字母缩写词。从那里检查 GCC 内部文档,我发现 gcc 使用 BB 来构建控制流图 (CFG)。

有人能解释一下循环中的 BB 是什么意思吗?

另外,我不知道有多少 BB 实际上导致 gcc 矢量化失败?

【问题讨论】:

    标签: gcc loops vectorization


    【解决方案1】:

    BB 的意思是“基本块”。请参阅http://en.wikipedia.org/wiki/Basic_block 了解更多关于它们的解释。

    我想如果有太多的基本块,控制流会导致无法矢量化操作。请参阅http://en.wikipedia.org/wiki/Vectorization_(parallel_computing),尤其是关于“存在控制流”的部分,了解矢量化受到影响的原因。

    【讨论】:

      猜你喜欢
      • 2010-12-03
      • 2015-08-17
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 2019-07-16
      • 1970-01-01
      相关资源
      最近更新 更多