次のループをベクトル化しようとしています (内側のみ):
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 を使用して、コードを変更せずにループをベクトル化することができました。