我正在尝试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);
的已分配指针?