英特尔AVX:为什么双精度浮点变量没有256位版本的点积?

时间:2013-04-16 09:23:48

标签: c++ performance simd avx

another question on SO我们尝试(并成功)找到替换AVX缺失指令的方法:

 __m256d _mm256_dp_pd(__m256d m1, __m256d m2, const int mask);

任何人都知道为什么缺少这条指令?部分答案here

1 个答案:

答案 0 :(得分:12)

这个以及其他各种AVX限制的根本原因在于,架构上AVX只是两个并排的SSE执行单元 - 您会注意到几乎没有AVX指令在两个128位半部分之间的边界上水平操作向量(在vpalignr的情况下尤其令人讨厌)。通常,您实际上只需并行获得两个128位SSE操作,这对于大多数仅以元素方式操作的指令非常有用,但不如正确的256位SIMD实现有用。