3

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。

4

1 に答える 1