文|新智元
编辑|小芹 张乾
昨天是 3 月 14 日,也是国际圆周率日。
在这天,一位谷歌工程师创造了一项世界纪录!
她叫 Emma Haruka Iwao,来自日本,她利用谷歌云计算资源,花了 121 天,成功将圆周率 π 计算到小数点后 31.4 万亿位,准确地说,是小数点后 31415926535897 位,刷新了世界纪录。
Emma Haruka Iwao
上一次记录是在 2016 年创造的,当时瑞士物理学家 Peter Trueb 用一台电脑配置 24 个 6TB 硬盘,花了 105 天计算到圆周率小数点后的第 22.4 万亿位。
也就是说,Iwao 往后多算了近 9 万亿位。
Iwao 表示,这次的记录是利用云计算完成的,这也是第一次使用云打破吉尼斯世界纪录,证明了谷歌云的基础设施能够可靠地完成长时间、高计算量的任务。
Iwao 的团队使用了一个名为 ycruncher 的程序,该程序由谷歌云平台计算引擎上运行的 25 个虚拟机驱动。计算过程一共产生了 170TB 的数据,相当于整个国会图书馆印刷藏品数据量。
Iwao 表示:“对于 π 来说,最大的挑战是它需要大量的存储和内存才能计算出来。”
当然了,现实世界并用不到那么精细的 π,NASA 将火箭送至太空也仅运用了 π 小数点后 15 个数字,而要以单个原子的精度来测量可见宇宙的周长,也只需要算到 π 小数点后 40 位数字。
Iwao 说:“这一直是我自孩童以来的梦想,打破 π 小数点后位数的世界纪录。”12 岁时,她就试过自己下载软件,试图计算圆周率 π。
Iwao 在谷歌云官方博客上详细介绍了这次的计算过程,并且,所计算出来的 31.4 万亿个数字也已经成为开放资源可供下载,欢迎所有想用这些数字做实验的人下载使用。
121天,使用云计算的优势
自古巴比伦人以来,人们就没有停止过计算圆周率 π。π 是一个无限不循环小数,为一个圆的周长和其直径的比率。公元 5 世纪时,中国数学家刘徽和祖冲之用几何方法将 π 精确到小数点后 7 位,即最经典的 3.1415926,保持了 1000 多年。
我们使用 y-cruncher 实现了这一壮举,这是由 Alexander J. Yee 开发的一个 Pi 基准程序,使用 Google Compute Engine 虚拟机群集。计算从 2018 年 9 月 22 日开始到 2019 年 1 月 21 日结束,持续了 121 天。
31.4 万亿的数字比 Peter Trueb 在 2016 年 11 月创造的世界纪录增加了近 9 万亿。Yee 使用用 Bellard 公式和 BBP 公式对计算结果进行了独立验证。下面是结果的最后 97 位:
6394399712 5311093276 9814355656 1840037499 3573460992 1433955296 8972122477 1577728930 8427323262 4739940
当然,大多数科学应用都不需要超过几百位的 π,不过,这并未阻止科学家们继续计算 π;从 2009 年开始,工程师们已经使用定制的个人电脑来计算小数点后万亿位数的 π。事实上,计算更多 π 数字的竞赛最近才加速,计算机科学家们将其用作测试超级计算机的方法,数学家也在相互竞争。
然而,Chudnovky 公式具有复杂性 —— 计算 π 的常用算法是O(n(logn)3)。通俗地说,这意味着计算数字所需的时间和资源比数字本身增加得更快。此外,随着计算的进行,在潜在的硬件中断或故障中生存下来会变得越来越困难。
我们决定使用云来计算 π。使用 Compute Engine,谷歌云的高性能基础设施,比使用专用物理机器有许多好处。首先,Compute Engine 的实时迁移功能允许在基础设施更新时应用程序继续运行。我们在 111.8 天里运行了 25 个节点,即 2795 个机器日 (7.6 个机器年),在此期间,谷歌云不间断地执行了数千次实时迁移,并且对计算过程没有造成影响。
在云中运行还允许我们将计算出的数字完全作为磁盘快照发布。在不到一个小时的时间内,每天只需 40 美元,你就可以复制快照、处理结果并处理计算资源。在云计算出现之前,分发如此大的数据集的唯一可行方法是运送物理硬盘。
此外,在云环境中运行还有很多好处:可以选择多种硬件,包括支持 AVX-512 的最新英特尔 Skylake 处理器。你可以根据需要对实例进行放大或缩小,并在使用完实例后将其删除,只需要为使用的实例付费即可。
以下是该计划的其他详细信息:
我们的 π 集群架构
集群设计
我们为主计算节点选择了一个 n1-megamem-96 实例。它是计算引擎上可用的最大的虚拟机类型,在项目开始时提供了 Intel Skylake 处理器。Skylake 一代 Intel 处理器支持 AVX-512,这是 512-bit SIMD 扩展,可以对 512 位数据或 8 个双精度浮点数同时执行浮点运算。
目前,每个计算引擎虚拟机最多可以挂载 64 TB 的永久磁盘。我们使用 iSCSI 协议远程链接永久磁盘以添加额外容量。节点的数量是根据 y-cruncher 的磁盘基准测试性能决定的。我们为 iSCSI 目标机选择了 n1-standard-16,以确保计算节点和存储之间有足够的带宽,因为网络出口带宽和永久磁盘吞吐量是由 vCPU 内核的数量决定的。
计算在以下 Google Cloud 节点上完成:
计算:1 x n1-megamem-96(96 vCPU,1.4TB),带 30TB SSD
存储:24 x n1-standard-16(16 vCPU,60GB),带 10TB SSD
24 个较小的节点用于网络附加存储。总计约有 240 TB 的存储空间。
如何获得31415926535897位数字
我们的 pi.delivery 服务提供了一个 REST API 来访问 web 上的数字。
方便你在自己的工作中使用这些数字,我们将计算出的 π 数字作为快照在谷歌云平台上提供。每个快照都包含一个带有十进制数字的文本文件,你可以根据这些图像创建一个新的永久磁盘。我们提供了 XFS 和 NTFS 磁盘格式来分别适应 Linux 和 Windows 操作系统。
你需要加入 pi-31415926535897 Google Group 才能获取访问权限。将克隆磁盘保存在项目的 us-central1、us-west1 和 us-east1 区域之一,每天大约需要花费 40 美元。我们将把这些快照保存到 2020 年 3 月 14 日。快照可在以下位置获得:
XFS:
NTFS:
谷歌博客: