使用SIMD进行矩阵矢量化

时间:2013-05-08 14:04:07

标签: c++ gcc vectorization compiler-optimization simd

我试图对以下循环进行矢量化(只有内部):

for (int i =0; i<n; i++){
    const int line = i * width;
    for (int j = 0; j < n; j++){
        a[line + j] = 3;
    }
}

但我收到以下错误:

未矢量化:不适合收集D.38226_277 = * D.38225_276;

我用Google搜索,似乎编译器没有向量化,因为他不知道数据是连续的。 我确定数据([line + j])是连续的。 我如何告诉编译器相信我并对循环进行矢量化?

我正在使用GCC 4.7


修改

我能够使用英特尔编译器在没有任何代码更改的情况下对循环进行编辑。

0 个答案:

没有答案