![]()
双精度浮点计算(FP64)支撑着现代飞机飞行、火箭发射、疫苗研发,甚至核武器运行。但英伟达并未构建专用硬件来处理这种关键数据类型,而是依靠仿真技术来提升高性能计算和科学计算应用的性能,这是AMD在最近几代产品中领先的领域。
需要注意的是,这种仿真并未完全替代英伟达GPU中的硬件FP64。英伟达新发布的Rubin GPU仍能提供约33 teraFLOPS的峰值FP64性能,但这实际上比四年前的H100少了一个teraFLOP。
如果在英伟达CUDA库中启用软件仿真,芯片据称可实现高达200 teraFLOPS的FP64矩阵性能。这是其即将淘汰的Blackwell加速器硬件性能的4.4倍。
从纸面数据看,Rubin不仅是英伟达有史以来最强大的AI加速器,也是多年来科学计算领域最强大的GPU。
英伟达超级计算产品高级总监Dan Ernst表示:"通过与合作伙伴的多项研究以及我们自己的内部调查,我们发现仿真获得的精度至少与张量核心硬件的精度一样好。"
仿真FP64并非英伟达独有,它有潜力显著提升现代GPU的吞吐量和效率。但并非所有人都对此信服。
AMD研究员Nicholas Malaya表示:"它在某些基准测试中表现不错,但在真实的物理科学模拟中是否表现良好并不明显。"他认为,虽然FP64仿真确实值得进一步研究和实验,但还没有为实际应用做好准备。
为什么FP64在AI时代仍然重要
即使芯片设计推向更低精度的数据类型,FP64仍然是科学计算的黄金标准,这是有充分理由的。FP64在动态范围方面无与伦比,能够表达超过18.44万亿亿(2^64)个独特值。
相比之下,像DeepSeek R1这样的现代AI模型通常在FP8下训练,只能表达可怜的256个独特值。利用神经网络的一般同质性,可以使用块浮点数据类型如MXFP8或MXFP4来扩展其动态范围。
这对定义大语言模型的模糊数学来说是可以的,但无法替代FP64,特别是当涉及生死攸关的情况时。
与高度容错的AI工作负载不同,HPC仿真依赖于质量和能量守恒等基本物理原理。Malaya说:"一旦开始产生错误,这些有限错误就会传播,并导致爆炸等问题。"
仿真FP64和Ozaki方案
使用低精度(通常是整数数据类型)来仿真FP64的想法并不新鲜。Ernst说:"仿真古老如泥土,我们在50年代中期就有了仿真,那时我们还没有浮点硬件。"
这个过程需要更多操作才能完成,通常会因此产生严重的性能损失,但即使硬件缺乏专用浮点单元(FPU),也能实现浮点数学运算。
到80年代,FPU变得普遍,对仿真的需求基本消失。然而,2024年初,东京和芝浦工业大学的研究人员发表了一篇论文,通过展示FP64矩阵操作可以分解为多个INT8操作来复兴这一概念,当在英伟达张量核心上运行时,可以实现高于原生的性能。
这种方法通常被称为Ozaki方案,它是英伟达去年底发布的FP64仿真库的基础。正如Ernst迅速指出的那样:"它仍然是FP64。不是混合精度。只是从硬件角度以不同方式完成和构建的。"
现代GPU配备了低精度张量核心。即使没有Rubin张量核心中的高级自适应压缩,芯片也能提供35 petaFLOPS的密集FP4计算。相比之下,在FP64下,芯片速度慢了1000多倍。
这些低精度张量核心构建和运行效率很高,所以问题变成了为什么不用它们来做FP64,Ernst解释说:"我们有硬件,让我们尝试使用它。这就是超级计算的历史。"
但它真的准确吗
虽然英伟达热衷于突出FP64仿真在其Rubin甚至更老的Blackwell GPU上实现的能力,但竞争对手AMD认为这种方法还没有完全准备好。
根据Malaya的说法,FP64仿真在条件良好的数值系统中效果最好,高性能Linpack(HPL)基准就是一个典型例子。"但当你看材料科学、燃烧代码、带状线性代数系统等时,它们是条件更差的系统,突然就开始崩溃了,"他说。
换句话说,FP64仿真是否有意义实际上取决于具体应用。对某些应用来说是可以的,而对其他应用则不行。
AMD的主要症结之一是FP64仿真并不完全符合IEEE标准。英伟达的算法不考虑正零与负零、非数字错误或无限数字错误等情况。
因此,用于仿真更高精度的中间操作中的小错误可能导致扰动,从而影响最终结果,Malaya解释说。
解决这个问题的一种方法是增加使用的操作数量。然而,在某个点上,所需的操作数量将超过仿真可能提供的任何优势。
所有这些操作也占用内存。Malaya说:"我们有数据显示,在Ozaki中仿真FP64矩阵大约使用了两倍的内存容量。"
基于这些原因,AMD正将注意力集中在依赖双精度和单精度应用的专用硬件上。其即将推出的MI430X利用AMD的小芯片架构来增强双精度和单精度硬件性能。
填补空白
Ernst并不忽视像Ozaki方案这样的FP64仿真算法面临的挑战,他很清楚英伟达实现中的差距。
Ernst认为,对大多数HPC从业者来说,正负零这样的问题并不是什么大问题。同时,英伟达已经开发了补充算法来检测和缓解非数字、无限数字和低效仿真操作等问题。
至于内存消耗,Ernst承认可能会稍高一些,但强调这种开销是相对于操作而不是应用程序本身。他说,大多数时候,我们谈论的矩阵最多只有几个GB大小。
因此,虽然FP64仿真确实不符合IEEE标准,但这是否真的重要很大程度上取决于具体应用,Ernst争辩说。"大多数IEEE合规排序规则发挥作用的用例在矩阵、矩阵乘法情况下不会出现。也没有DGEMM倾向于实际遵循那个规则,"他说。
适用于矩阵,不太适用于向量
即使英伟达能够克服FP64仿真的潜在陷阱,这也不能改变该方法只对依赖密集通用矩阵乘法(DGEMM)操作的HPC应用子集有用的事实。
根据Malaya的说法,对于60%到70%的HPC工作负载,仿真几乎没有什么好处。
他说:"在我们的分析中,绝大多数真实HPC工作负载依赖向量FMA,而不是DGEMM。我不会说这是市场的一小部分,但实际上是一个利基领域。"
对于向量密集型工作负载,如计算流体动力学,英伟达的Rubin GPU被迫在芯片CUDA核心中较慢的FP64向量加速器上运行。
然而,正如Ernst迅速指出的那样:更多的FLOPS并不总是意味着有用的FLOPS。倾向于在FP64向量引擎上运行的相同工作负载很少能够利用芯片理论性能的一小部分,这完全是因为内存跟不上。
我们在TOP500的向量密集型高性能共轭梯度基准中清楚地看到了这一点,由于内存子系统提供的更高的比特每FLOPS比率,CPU往往占主导地位。
Rubin可能无法提供最快的FP64向量性能,但凭借22 TB/s的HBM4,它在这些工作负载中的实际性能很可能比规格表显示的要高得多。
不管准备好与否,FP64仿真来了
随着大量由英伟达Blackwell和Rubin GPU驱动的新超级计算机将在未来几年上线,关于FP64仿真可行性的任何问题都将尽快得到检验。
由于这种仿真不依赖于特定硬件,随着研究人员发现该技术擅长或困难的场景,算法有可能随时间改进。
尽管Malaya有所担忧,他指出AMD也在通过软件标志调查在MI355X等芯片上使用FP64仿真,以查看它可能适用的地方。
他告诉我们,IEEE合规性将大大有助于验证这种方法,确保从仿真得到的结果与从专用硅得到的结果相同。
Malaya说:"如果我能对合作伙伴说运行这两个二进制文件:这个给你与另一个相同的答案并且更快,是的,在底层我们正在做一些方案——我认为这是一个令人信服的论点,表明它已经为黄金时间做好了准备。"
他指出,可能对某些应用来说,仿真比其他应用更可靠。"作为一个社区,我们应该建立一个应用篮子来查看。我认为这是这里前进的方式。"
Q&A
Q1:什么是FP64仿真技术?它是如何工作的?
A:FP64仿真技术是指使用低精度数据类型(如INT8)来模拟双精度浮点计算的方法。该技术基于Ozaki方案,将FP64矩阵操作分解为多个低精度操作,在英伟达张量核心上运行时能实现比原生硬件更高的性能。英伟达声称通过软件仿真可实现高达200 teraFLOPS的FP64矩阵性能。
Q2:FP64仿真技术有什么局限性?
A:FP64仿真存在几个局限性:不完全符合IEEE标准,无法处理正负零、非数字错误等特殊情况;内存消耗约为传统方法的两倍;主要适用于矩阵密集型应用,对60-70%的向量密集型HPC工作负载效果有限;在条件较差的数值系统中容易出现精度问题。
Q3:AMD对FP64仿真技术持什么态度?
A:AMD对FP64仿真技术持谨慎态度。AMD研究员认为该技术在某些基准测试中表现不错,但在真实物理科学模拟中的效果并不明显,还没有为实际应用做好准备。不过AMD也在MI355X等芯片上调查FP64仿真的应用可能性,同时更专注于开发专用的双精度和单精度硬件。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.