jjzjj

c++ - AVX:数据对齐:store crash,storeu,load,loadu 没有

我正在修改RNNLM一个神经网络来研究语言模型。但是考虑到我的语料库的大小,它运行得非常慢。我试图优化矩阵*vector例程(这是一个占小数据集总时间63%的例程(我预计它在大数据集上会更糟))。现在我坚持使用内在函数。for(b=0;b此示例崩溃于:_mm256_store_ps(&(dest.ac[b*8+from+0]),t4);但是如果我改成_mm256_storeu_ps(&(dest.ac[b*8+from+0]),t4);(我想你是未对齐的)一切都按预期进行。我的问题是:为什么load可以工作(而如果数据未对齐,它不应该工作)而store却不能。(此外,两者都在同一个地址

c++ - 如何在没有别名问题的情况下实现 "_mm_storeu_epi64"?

(注意:虽然这个问题是关于“存储”的,但“负载”情况也有同样的问题,并且是完全对称的。)SSE内在函数提供_mm_storeu_pd具有以下签名的函数:void_mm_storeu_pd(double*p,__m128da);因此,如果我有两个double的vector,并且我想将它存储到两个double的数组中,我可以使用这个内在函数。但是,我的vector不是两个double;它是两个64位整数,我想将它存储到两个64位整数的数组中。也就是说,我想要一个具有以下签名的函数:void_mm_storeu_epi64(int64_t*p,__m128ia);但是内在函数没有提供这样的功