当我尝试使用 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。