有人能告诉我如何通过SSE / AVX使用SIMD在Ivy Bridge CPU上同时进行最大数量的32位无符号整数乘法吗?
我理解AVX确实有256位寄存器用于乘法,但这是浮点数(AVX2引入了256位整数寄存器)。因此,我不太确定使用浮点寄存器进行整数乘法是否更好(如果可能的话)?
另外,我不确定寄存器的数量是否重要,或者我是否需要查看CPU的端口。看起来端口0和端口5可以处理SSE整数ALU?
答案 0 :(得分:1)
每个时钟可以进行一次pmulld
= 4次乘法运算。
因此,我不太确定使用浮点寄存器进行整数乘法是否更好(如果可能的话)?
这样的事情是可能的。你当然可以将8个整数放在ymm
寄存器中,但是你会被卡住。您需要对它们执行有用的操作的指令是AVX2。
答案 1 :(得分:0)
正如你在这里看到的那样:
目前没有解决方案来改善长整数与SSE或AVX的乘法。