AVX で最も単純なループを展開しようとすると、実行時エラーが発生します -セグメンテーション違反:
const int sz = 9;
float *src = (float *)_mm_malloc(sz*sizeof(float), 16);
float *dest = (float *)_mm_malloc(sz*sizeof(float), 16);
for(int i=0; i<8; i+=8)
{
__m256 buffer = _mm256_load_ps(src+i);
_mm256_store_ps(dest+i, buffer);
}
_mm_free(src);
_mm_free(dest);
興味深い: sz =8 または >=13 の場合、ランタイムはクラッシュしません。そうしないと、セグメンテーション違反が発生します。
どうしたの?
コンパイラ - gcc 4.7。