代码之家  ›  专栏  ›  技术社区  ›  Thomas

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

  •  3
  • Thomas  · 技术社区  · 9 年前

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

    3 回复  |  直到 9 年前
        1
  •  4
  •   Community Michael Schmitz    7 年前

    FMA3 由介绍 AMD in Piledriver (2012年5月)。(Vishera FX CPU,Trinity&Richland APU)。Piledriver具有256b(AVX ymm)存储吞吐量的严重性能错误( VMOVAPS/VMOVUPS :每17/20循环一次)。(参见 Agner Fog's 微阵列文档和其他来源。)禁用Piledriver上的256b AVX例程,或编写使用128b xmm FMA的Piledriver特定版本。(或者FMA4,它也可以在推土机上运行。)

    继任者, Steamroller 仅在Kaveri APU中找到。(FX CPU仍然是Piledriver。)Steamroller修复了256b存储的性能错误,但256b的所有内容所需的周期是128b版本的两倍,因此您不会从256b AVX中获得任何好处(除了循环开销的微小减少)。i、 如果FMA4可用,您还可以编写代码运行128b FMA4版本。

    FMA3与AVX2同时在Haswell推出(2013年6月)。许多人还没有从Sandybridge/IvyBridge升级,因为只有很小的性能差异,除了可以使用AVX2/FMA的代码。(即不是大多数东西。)

    FMA3是与 AVX2 。错误的答案说它是AVX2的一部分,这是因为Intel将其引入Haswell。

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

        2
  •  2
  •   Chuck Walbourn    9 年前

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

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

    FMA4得到了AMD“推土机”的支持,但他们又回到了用AMD“Piledriver”支持FMA3。

    考虑到所有这些芯片都是最近才出现的,它并没有广泛传播。Valve Hardare Survey尚未显示AVX、FMA3或AVX2数据,因此在这一点上,这绝对是一个猜测。

    顺便说一下,Xbox One和PS4 AMD Jaguar CPU不支持FMA3,尽管它们支持AVX和F16C。

    看见 DirectXMath: AVX2 , DirectXMath: F16C and FMA

        3
  •  1
  •   Elalfer    9 年前

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

    AMD有自己的FMA4,我见过它只使用过一次。。。

    我不知道如何通过了解AVX2数字来估计FMA的使用情况……基本上,这里有两点——每当编译AVX2时,编译器可能会生成FMA;FMA仅为FP,我预计大部分FP代码将被卸载到已经在客户端/游戏空间中的GPU。因此,FMA可能没有真正使用。

    但另一方面我知道 用于HPC(如dgemm和其他LAPACK&MKL函数)。

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