0

我正在尝试矢量化以下循环(仅内部):

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;

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

我正在使用 GCC 4.7


编辑

我能够使用英特尔编译器对循环进行验证,而无需对代码进行任何更改。

4

0 回答 0