gpt4 book ai didi

floating-point - 了解 FMA 指令性能

转载 作者:行者123 更新时间:2023-12-04 04:28:03 67 4
gpt4 key购买 nike

我想了解如何最大限度地提高 CPU 上的操作次数。我正在做一个简单的矩阵乘法程序,我有一个 Skylake 处理器。我正在查看有关此架构的 flops 信息的维基百科页面,但我很难理解它。

据我了解,FMA 指令允许 3 路 FP 输入,对吗?并允许在它们之间混合添加和乘法。但是当我只添加两个浮点数时会发生什么?它只是简单地乘以一吗?我可以在 1 个周期中添加 3 个浮点数,还是会拆分?我看到skylake,对于单精度输入有32 FLOPs/cycle,但是“两条8-wide FMA指令”是什么意思?

预先感谢您的解释

最佳答案

FMA 在单次操作中计算 ± a*b ± c,有一个舍入误差。这就是它的作用,没有别的。使用 FMA 指令无法计算 a + b + c;为此,您需要两个相关的 ADD 操作。

根据编译器的不同,您可能必须打开编译器选项以允许使用 FMA 指令,因为它们不会给出与先乘后加相同的结果。并且在某些情况下您可能需要重新排列您的代码,例如 ab + cd + e 将计算为 x = ab; y = FMA (c, d, x), z = y + e 但 e + ab + c*d 将计算为 x = FMA (a, b, e); z = FMA (c, d, x)。 FFT 的基本运算计算可以使用 8 个浮点运算来执行,并且可以使用 4 个 FMA 和其他两个运算重写为 10 个运算。

“两条 8-wide FMA 指令”意味着它可以使用两个 256 位向量寄存器执行 FMA 指令,每个寄存器包含 8 个浮点数,其中两个在同一周期内。

关于floating-point - 了解 FMA 指令性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41527900/

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