gpt4 book ai didi

sse - 对于Intel Haswell上的XMM/YMM FP操作,可以使用FMA代替ADD吗?

转载 作者:行者123 更新时间:2023-12-02 05:23:38 25 4
gpt4 key购买 nike

这个问题适用于 Haswell 上带有 XMM/YMM 寄存器的打包、单精度浮点运算。

所以根据真棒真棒table由 Agner Fog 汇总,我知道 MUL 可以在端口 p0 和 p1 上完成(recp 吞吐量为 0.5),而 ADD 仅在端口 p1 上完成(recp 吞吐量为 1)。我可以排除这个限制,但我也知道 FMA 可以在端口 p0 或 p1 上完成(recp 吞吐量为 0.5)。因此,当 FMA 可以使用 p0 或 p1 并且它同时执行 ADD 和 MUL 时,为什么普通 ADD 仅限于 p1,这让我感到困惑。我是不是对 table 有什么误解?或者有人可以解释为什么会这样吗?

也就是说,如果我的阅读是正确的,那么英特尔为什么不直接使用 FMA 操作作为普通 MUL 和普通 ADD 的基础,从而提高 ADD 和 MUL 的吞吐量。或者,什么会阻止我使用两个同时、独立的 FMA 操作来模拟两个同时、独立的 ADD 操作?执行 ADD-by-FMA 会受到哪些处罚?显然,使用了更多数量的寄存器(ADD 的 2 个寄存器 vs ADD-by-FMA 的 3 个寄存器),但除此之外?

最佳答案

您并不是唯一一个对英特尔为何这样做感到困惑的人。阿格纳·雾在他的micro-architecture Haswell 的手册写道:

It is strange that there is only one port for floating point addition, but two ports for floating point multiplication.

在阿格纳的留言板上he also writes

There are two execution units for floating point multiplication and for fused multiply-and-add, but only one execution unit for floating point addition. This design appears to be suboptimal since floating point code typically contains more additions than multiplications.

该主题继续提供有关该主题的更多信息,我建议您阅读这些信息,但我不会在此处引用。

他也在这个答案中讨论了这个问题 flops-per-cycle-for-sandy-bridge-and-haswell-sse2-avx-avx2

The latency of FMA instructions on Haswell is 5 and the throughput is 2 per clock. This means that you must keep 10 parallel operations going to get the maximum throughput. If, for example, you want to add a very long list of f.p. numbers, you would have to split it in ten parts and use ten accumulator registers.

This is possible indeed, but who would make such a weird optimization for one specific processor?

他的回答基本上回答了你的问题。您可以使用 FMA 使加法吞吐量加倍。事实上,我在加法吞吐量测试中这样做了,并且确实看到它翻倍了。

总而言之,如果您的计算受延迟限制,则不要使用 FMA,而应使用 ADD。但如果吞吐量有限,您可以尝试使用 FMA(通过将乘数设置为 1.0),但您可能必须使用许多 AVX 寄存器来执行此操作。

我展开了 10 次以获得最大吞吐量 loop-unrolling-to-achieve-maximum-throughput-with-ivy-bridge-and-haswell

关于sse - 对于Intel Haswell上的XMM/YMM FP操作,可以使用FMA代替ADD吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28861416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com