小编qua*_*ver的帖子

为什么 SIMD 比标量对应的慢

这是另一种SSE is slower than normal code! Why?类型的问题。
我知道有很多类似的问题,但它们似乎与我的情况不符。

我正在尝试使用蒙哥马利模乘法实现Miller-Rabin 素性测试以进行快速模运算。 我尝试以标量和 SIMD 方式实现它,结果发现 SIMD 版本慢了大约 10%。 [esp+16] 或 [esp+12] 指向是否有人想知道的模倒数。

N

我真的很困惑这样一个事实,即所谓的 1 Latency 1c Throughput 1uops 指令psrldq需要超过 3 Latency 0.5c Throughput 1uops pmuludq

下面是在 Ryzen 5 3600 上运行的 Visual Studio 的代码和运行时分析。

关于如何改进 SIMD 代码和/或为什么它比标量代码慢的任何想法表示赞赏。

PS似乎由于某种原因,一条指令关闭了运行时分析

编辑1:对图像的评论是错误的,我在下面附上了一个固定版本:

    ;------------------------------------------
    ; Calculate base^d mod x
    ;
    ; eax = 1
    ; esi = x
    ; edi = bases[eax]
    ; ebp = d
    ; …
Run Code Online (Sandbox Code Playgroud)

x86 assembly sse simd

3
推荐指数
1
解决办法
141
查看次数

标签 统计

assembly ×1

simd ×1

sse ×1

x86 ×1