循环太多BB的意思是什么,不能矢量化?

时间:2011-05-07 01:24:12

标签: gcc loops vectorization

简而言之,情况是这样的:我一直在尝试使用选项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矢量化失败了?

1 个答案:

答案 0 :(得分:3)

BB表示“基本块”。有关详细信息,请参阅http://en.wikipedia.org/wiki/Basic_block

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