使用SSE / AVX在Ivy Bridge上进行最大SIMD整数乘法运算?

时间:2014-04-20 16:47:59

标签: c++ vectorization sse simd avx

有人能告诉我如何通过SSE / AVX使用SIMD在Ivy Bridge CPU上同时进行最大数量的32位无符号整数乘法吗?

我理解AVX确实有256位寄存器用于乘法,但这是浮点数(AVX2引入了256位整数寄存器)。因此,我不太确定使用浮点寄存器进行整数乘法是否更好(如果可能的话)?

另外,我不确定寄存器的数量是否重要,或者我是否需要查看CPU的端口。看起来端口0和端口5可以处理SSE整数ALU?

2 个答案:

答案 0 :(得分:1)

每个时钟可以进行一次pmulld = 4次乘法运算。

  

因此,我不太确定使用浮点寄存器进行整数乘法是否更好(如果可能的话)?

这样的事情是可能的。你当然可以将8个整数放在ymm寄存器中,但是你会被卡住。您需要对它们执行有用的操作的指令是AVX2。

答案 1 :(得分:0)

正如你在这里看到的那样:

目前没有解决方案来改善长整数与SSE或AVX的乘法。