返回指向__m256d数组的指针时出现分段错误

时间:2019-07-16 13:17:54

标签: c++ segmentation-fault avx2

我正在尝试Intel Intrinsic AVX2数据类型和函数。与在网络上找到的大多数代码都专注于在数组上256位数据段上循环不同,我尝试创建{{1} }数据。 该代码用于尝试将所有数组数据加载到__m256d寄存器(此处为这些类型的数组)中。但是当尝试检索它们或对其进行其他操作时,我收到了分段错误11错误。

我尝试在网上搜索其他答案,但找不到任何东西。

这是加载函数:

__m256

并且我在main中使用了该功能:

__m256d* load_pd(double *a,int size)
{
    int length = size / 4;

    __m256d * out= new __m256d[length];
    int cnt=0;
    for(int i=0;i<size;i+=4)
    {
        out[cnt++] = _mm256_load_pd(&a[i]);
    }
    return out;
}

但是下一个功能:

    double a[256]={256};
    double b[256] = {256};
    __m256d* a_vec = load_pd(a,256);
    __m256d* b_vec = load_pd(b,256);

当我这样调用add_pd时:

__m256d* add_pd(__m256d* a, __m256d* b,int size)
{
    __m256d* res = new __m256d[size];
    for(int i=0;i<size;i++)
    {
        res[i] = _mm256_add_pd(a[i],b[i]);
    }
    return res;
}

我得到细分错误:11 这里有什么问题?其他指针是否不允许指向double c[256] = {256}; __m256d* res = _mm256_store_pd(a_vec,b_vec,256/4); 的已分配指针?

0 个答案:

没有答案