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;

私はグーグルで調べましたが、データが連続していることを知らないため、コンパイラーはベクトル化していないようです。データ ([行 + j]) が連続していると確信しています。私を信頼してループをベクトル化するようにコンパイラーに伝えるにはどうすればよいですか?

GCC 4.7 を使用しています


編集

Intel Compiler を使用して、コードを変更せずにループをベクトル化することができました。

4

0 に答える 0