X86 FMA指令集的硬件支持有多丰富

X86 FMA指令集的硬件支持有多丰富,x86,hardware,sse,simd,avx,X86,Hardware,Sse,Simd,Avx,非常有用,因为它概述了SSE指令集的硬件支持。然而,我找不到任何关于FMA支持有多丰富的资源。有这方面的数据吗?或者,是否有任何其他指令集与FMA有或多或少的联系,例如,如果您有一个指令集,您很可能有另一个指令集,您可以根据它进行评估?FMA3{通常称为FMA}是AVX2指令集的一部分,从Haswell&Piledriver微体系结构开始提供 AMD有自己的FMA4,我只见过一次 我不知道如何通过知道AVX2数字来估计FMA的使用量。。。基本上,这里有两点-编译器可能会在编译AVX2时生成FMA

非常有用,因为它概述了SSE指令集的硬件支持。然而,我找不到任何关于FMA支持有多丰富的资源。有这方面的数据吗?或者,是否有任何其他指令集与FMA有或多或少的联系,例如,如果您有一个指令集,您很可能有另一个指令集,您可以根据它进行评估?

FMA3{通常称为FMA}是AVX2指令集的一部分,从Haswell&Piledriver微体系结构开始提供

AMD有自己的FMA4,我只见过一次

我不知道如何通过知道AVX2数字来估计FMA的使用量。。。基本上,这里有两点-编译器可能会在编译AVX2时生成FMA;FMA是FP-only,我希望大部分FP代码已经卸载到客户端/游戏空间的GPU上。因此,FMA可能不会真正使用

但另一方面,我知道它在HPC中很有用(如dgemm和其他LAPACK&MKL函数)


老实说,为一个相当大的应用程序进行AVX2调优时,我只使用过FMA一次。

FMA3是AVX2的一部分,因此任何具有AVX2的芯片都应该支持FMA3。也就是说,您可以也应该独立检查FMA3支持

AVX2由Intel“Haswell”、AMD挖掘机和更高版本的处理器支持

FMA4是由AMD的“推土机”支持的,但他们已经用AMD的“Piledriver”重新支持FMA3

考虑到所有这些芯片都是最新的,所以它的分布并不广泛。Valve Hardare调查尚未显示AVX、FMA3或AVX2数据,因此在这一点上肯定是一个猜测

顺便说一句,Xbox One和PS4 AMD捷豹CPU不支持FMA3,尽管它们支持AVX和F16C

看,, 于(2012年5月)推出。(Vishera FX CPU、Trinity&Richland APU)。Piledriver存在一个严重的性能缺陷,其存储吞吐量为256b(AVX ymm)(
VMOVPS/VMOVUPS
:每17/20个周期一个)。(请参阅MicroachDoc和其他来源)禁用Piledriver上的256b AVX例程,或者编写一个使用128b xmm FMA的Piledriver特定版本。(或FMA4,也可以在推土机上运行。)

继任者只有在卡维里·阿普斯(Kaveri APUs)才能找到。(FX CPU仍然是Piledriver。)Steamroller修复了256b存储的性能缺陷,但256b所有操作所需的周期是128b版本的两倍,因此256b AVX没有带来任何好处(除了循环开销的微小减少)。i、 e.如果FMA4可用,您还可以编写代码来运行128b FMA4版本

FMA3由英特尔在哈斯韦尔(2013年6月)与AVX2同时推出。许多人还没有从Sandybridge/IvyBridge升级,因为除了可以充分利用AVX2/FMA的代码之外,性能差异很小。(即不是大多数东西。)

FMA3是一个独立于CPUID的功能标志。错误的答案是说它是AVX2的一部分,这是因为英特尔在Haswell中引入了它


总之,很多AMD用户可能确实支持FMA,即使它只是推土机FMA4。至于英特尔,就连Nehalem CPU对大多数人来说都足够快,所以没有太多理由升级。不过,我没有任何数字。

我认为FMA支持与AVX2相关,所以Haswell/Broadwell/Skylake和更高版本。极端估计:渗透率低于76%。因为这就是SSE4.2的所在,所有支持FMA的处理器也都支持SSE4.2。它可能要小得多,但至少它给出了一些上限。@harold这绝对是错误的估计,因为SSE4.2根本不意味着FMA支持!!!这只意味着ppl在约76%的病例中使用了Nehalem+,这是在2008年引入的,Haswell于2013年发布。如果我们假设来自用户的“线性更新”,这意味着只有约30%的用户可能是Haswell和/或Broadwell=>只有约20%的CPU可能支持FMA,这可能更高bound@Elalfer是的,现在请读我写的。@harold是的,人们总是说100%是上限;)FMA3与AVX2一起引入,但它们是单独的CPUID功能标志。这就是Piledriver如何支持FMA4和FMA3,而不是AVX2。我在avx2标记wiki的更新中提到了这一点: