プログラムの一部をベクトル化していますが、Segmentation fault
というエラーが返されます。これには何が問題なのですか?ここでは問題を引き起こす単純化されたセクションです。 j++
とi++
は私が欲しいものです、私はj += 16
になりたくありません。なぜこのコードセクションは "セグメンテーションフォールト"エラーを返しますか?
unsigned short int input[256][256] __attribute__((aligned(32)));//global
for (i = 0; i < 256 - 16; i++) {
for (j = 0; j < 256 - 16; j++) {
temp_v2 =_mm256_load_si256((__m256i *)&input[i][j]);
}
}
は独自拡張を使用しないでください。 Cは '_Alignas'指定子を提供します。 – Olaf
あなたのコードは厳密なエイリアシングに違反しています –
gccでは'__attribute __((aligned(X))) 'を使用しています。厳密なエイリアシングのために私は何ができますか? – ADMS