Performance evaluation of branch-free fused multiply-add algorithms for multi-component-type multiple-precision floating-point arithmetic
本文提出并基准测试了针对双字、三字和四字多精度算术的新型无分支融合乘加算法,证明了通过消除条件分支,这些算法比现有方法实现了进一步的性能提升。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正试图仅使用标准的、现成的乐高积木来建造一台超精确的计算器。这些积木就是你的计算机普通的浮点数。通常情况下,当你把这些积木堆叠成一个“双字长”(两块积木)、“三字长”(三块积木)或“四字长”(四块积木)的数字时,你必须不断检查每一块积木的大小。如果某块积木太大或太小,你就必须停下来,暂停并重新排列堆叠。在计算机芯片的世界里,这些“暂停”被称为分支(branches)。
当你试图同时构建一百万个这样的堆叠时(比如在现代图形卡或强大的处理器上),这些暂停会变成一场噩梦。这就像一场交通拥堵,每辆车在前进前都必须停下来看一眼不同的路标。有些车向左转,有些向右转,整个车队因此陷入停滞。这就是所谓的“通道分歧(lane divergence)”,它会严重破坏性能。
重大发现:“无停顿”高速公路
Tomonori Kouya 的论文介绍了一种构建这些堆叠的新方法,这种方法永远不需要停下来看路标。它是一种“无分支(branch-free)”算法。它不再询问“这块积木够大吗?”并等待答案,而是使用一种巧妙的、预先规划好的路线,无论积木看起来如何,这条路线都能完美运行。
该论文通过一个超级聪明的机器人数学家(一个名为 FPANVerifier 的 SMT 求解器)证明了这条新路线对于所有标准计算机格式都是安全且准确的。主要发现是,通过消除这些“停下并检查”的暂停,计算机可以计算得更快。
魔术技巧:融合移动
论文关注一个特定的动作,叫做融合乘加(Fused Multiply-Add, FMA)。想象一下,你需要将两个数字相乘,然后加上第三个数字。通常,你需要分两步完成:
- 相乘(并可能为了修正结果而暂停)。
- 相加(并可能再次暂停)。
作者提出了一个“融合”版本,将这两步合并为一个流畅的动作,就像一个忍者在投掷飞刀的同时还能顺势接住它一样。
- 对于双字长(2 块积木): 旧方法需要 29 步。新方法仅需 17 步。
- 对于三字长(3 块积木): 旧方法需要 96 步。新方法仅需 66 步。
- 对于四字长(4 块积木): 旧方法需要 209 步。新方法仅需 146 步。
论文还讨论了由其他研究人员提出的一个“捷径”方法(6 步法)。至关重要的是,这个捷径并不具有普适性。 它是一个高速工具,仅在数字已经以特定方式排列好时(具体来说,如果加数至少是乘积的两倍)才有效。如果你尝试将这个捷径用于除法或平方根等通用数学问题(在这些问题中你无法保证数字会如此排列),其准确性会大幅下降。然而,作者的新方法无需特殊的排列即可适用于任何数字,使其成为一个真正的“即插即用”型通用高精度数学替代方案。
我们有多确定?
作者非常有信心,但他们是用硬核证据而非猜测来支撑这种信心的。
- 机器验证: 他们不仅仅是编写了代码并寄希望于成功;他们使用了一个计算机程序在数学上证明了他们新方法的误差极小(具体而言,受限于类似于 、 和 的公式,其中 是单个数字的微小舍入误差)。
- 到处测试: 他们在两种截然不同的超级计算机上运行了这些新算法:一台是 基于 Arm 的芯片(GB10),另一台是 基于 Intel 的芯片(H100)。
- 结果:
- 在 Arm 芯片上,新方法在进行除法和平方根计算时,速度提升了 1.5 到 2.1 倍。
- 在 Intel 芯片上,新方法在进行除法和平方根计算时,速度提升了 1.2 到 1.6 倍。
- 对于像矩阵乘法(GEMM)这样的大型数学任务,在 Arm 芯片上的加速效果更为显著,对于三字长数字,速度提升高达 2.0 倍。
“精确”的替代方案
论文还提到了这个技巧的一个“完美”版本,称为 Exact FMA。这个版本更加精确,但代价沉重:它比新提出的方法要慢 6 到 11 倍。作者建议仅在您绝对、百分之百需要最高精度且不在乎速度时,才使用这个“完美”版本。对于几乎所有其他情况,这种“无分支”方法才是赢家。
关于“旧”方法
论文还纠正了之前研究版本中的一个错误。此前,作者将他们的新方法与一种极其缓慢且低效的“完全蒸馏(fully distilled)”旧方法进行了对比。他们意识到这并不是一场公平的竞争。当他们将新方法与实际的标准“无分支”方法(该方法本身已经很快了)进行对比时,新方法依然胜出,但速度提升幅度较为温和(大约为 1.3 到 1.7 倍)。这仍然是一个巨大的胜利,但这是一个更现实的胜利。
底线
这篇论文表明,通过消除高精度数学中的“停下并检查”的暂停,我们可以在不损失准确性的情况下显著提高计算机的速度。这就像是从一辆必须在每个路口都停下的汽车,升级到了一辆可以飞越路口的汽车。作者已经证明了这行得通,并在真实硬件上进行了测试,展示了它已准备好用于下一代超快速计算器。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。