偶然当程序员却拿下图灵奖 超算榜单之父讲述人生开挂经历

广州刘青云 439 0

40年前偶然走上程序员道路的Jack Dongarra,是今年的图灵奖得主。

奖项设立机构美国计算机协会(ACM)表示,Dongarra的算法与软件成果推动了高性能计算(HPC)的发展。

正是他在数值算法和库上的开创性贡献,使得过去40年里,高性能计算软件追上了指数级硬件发展的节奏。

偶然当程序员却拿下图灵奖 超算榜单之父讲述人生开挂经历-第1张图片-小猪号

这位老爷子,还弄出了个TOP500的超算排行榜,每年两次帮超算跑跑分啥的。

刚刚,今年71岁的老爷子还参加了中国计算机学会举办的CNCC 2022,做了次特邀报告演讲。

演讲的主题,也与高性能计算息息相关。

为什么人类需要超算?

高性能计算 ,是指通过聚合计算能力来提供比传统计算机和服务器更强大的计算性能。

再通俗点来讲,就是用超级计算机来并行处理复杂问题。

为什么要用上超算?Jack Dongarra举了个例子。

他提到,科学和工程都通过理论和实验来推进,但两者常常遭遇限制,尤其是实验部分。

会遭遇的“拦路虎”非常多,有可能是制造仪器很难搞,有可能是所观察的事物发展太过迅猛,又或者是没有办法在实验室里完成实验。

比如,假设有两个星系会发生碰撞,这个过程会是什么?

与其只靠漫长的观测,不如在计算机上进行仿真模拟。

计算科学增强着当下的种种理论和实验,最快的超级计算机能为仿真模拟提供非常好的保真度和准确性,更重要的是,超算能够覆盖和支持仿真模拟过程中巨大的计算量。

这就不得不提到超算的结构。

超算由一堆CPU、GPU等异构芯片提供算力。

此外,它拥有一个高度并行的系统和分布式内存。为超算编程时,会用到MPI(用于编写并行计算机的跨语言通讯协议),以及用于共享内存并行系统的多线程程序设计方案OpenMP。

美国橡树岭国家实验室的超级计算机Frontier取得了斐然的成绩:在2022年第59届国际超算Top500名单中位居榜首。

Frontier大约有800万个核,9408个节点,它在负载下的电力是21兆瓦。

Jack Dongarra打了个顽皮的比方。

他说,在美国,如果他家用掉1兆瓦的电力,一年得给电力公司缴纳100万美元的电费。

也就是说,单是电费,Frontier一年就要花掉2100万美元呢!

偶然当程序员却拿下图灵奖 超算榜单之父讲述人生开挂经历-第2张图片-小猪号

Frontier的最高性能是每秒2 x 1018次浮点运算。

这是一个难以置信的计算量。如果现在全球所有人停下手里的工作,开始每秒做一次计算,昼夜不停、不眠不休地计算四年,才能达到1018次浮点运算。然而,这样庞大的运算量,超算一秒就能完成。

除了计算,超算还涉及异构数据在不同芯片间的搬运,Jack Dongarra称之为移动数据(data moving)

Jack Dongarra指出,现在的超算对已经对浮点运算做了大量优化,移动数据的成本已经比计算成本还高。

降低移动数据的成本,将成为未来重点的研究方向。

此外,AI for Science已经在很多科学领域发挥重要作用,譬如DeepMind旗下的Alpha系列,如Alpha Zero、AlphaStar、AlphaTensor……

今年推出的Alphafold2,其蛋白质结构数据库揭开了蛋白质宇宙,有人因此戏称“结构生物学家要失业了”。

超算的另一个发展方向,就是更适合做AI计算。

AI有很多方面,有ML、NLP、专家系统、CV、语音、机器人等。

Jack Dongarra给出了超算适合做AI计算的理由。

首先,互联网上存在的大量数据,可以用来训练和建立ML算法,与此同时,因为提升洞察力,ML已经成为了解决问题时所要考虑的“基础设施”之一。

而关于用来做ML计算内核的GPU,人类也对其背后的算法和理论有了更深度的了解。

ML的核心是矩阵,线性代数在其中扮演着重要的角色。

“8位浮点(FP8)精度很适用于训练神经网络的硬件。”

Jack Dongarra对此进行了进一步解释:

相比于16位、32位的浮点精度,较低的精度正是ML所需要的。

这就是为什么现在更多的计算机被设计用来专门解决ML的问题。

他还提到,未来的超算或许会拥有更多的加速器,它们可以用来进行ML、神经神态计算、量子计算、光学计算等。

“从标量到向量,从向量到分布式内存,从分布式内存到加速计算,再到使用混合精度来进行计算。”Jack Dongarra总结道,“我得出结论,这里有三场计算机革命。”

意外走上漫漫超算路

拿下图灵奖的Jack Dongarra并非一开始就以当程序员为己任,一切都是“意外”。

高中毕业后,他选择进入芝加哥州立大学就读——这所学校类似于地方性的师范学校,为芝加哥公立学校系统培养了不少教师。

大三、大四时,Jack Dongarra福至心灵地“醒悟”,发现自己并不想教书。

几经周折,他申请了阿贡国家实验室的本科生职位。在那里,他有机会和真正的科学家一起做一些实际工作,并获取课程学分。

于是,就读于芝加哥州立大学的最后一个学期,Jack Dongarra在阿贡国家实验室度过了16周左右的时间。

△1980年Dongarra在阿贡国家实验室

在阿贡国家实验室的这段经历,促使他决心转攻计算机。

本科毕业之后,先在在伊利诺伊理工学院拿到CS硕士学位,又进入新墨西哥大学继续深造。

这里有一张1979年拍摄的照片,左数第二个年轻小伙就是Jack Dongarra本人。

那个时候,作为新墨西哥大学研究生的他,头发还很茂盛(他自己说的)。

图上四人搞了个小组,开发了一个叫LINPACK的项目,为此,Jack Dongarra还给自己心爱的车车挂上了同名车牌。

具体来说,LINPACK是一套求解线性方程组的数学软件。

没错,那个时候小帅哥本人真正醉心的还是线性代数领域。

他曾这样描述自己40年来成为程序员的动力:

我主攻的是数学方面的研究,尤其是数值线性代数方面,我所有的工作都源于此。

对那些需要解线性方程组的学科来说,一款能计算答案的软件无疑是非常重要的。

同时,你还必须确保软件运行与机器架构相一致,这样才能真正获得机器所能达到的高性能。

1993年,Jack Dongarra加入了TOP500排行榜团队,成为了TOP500第一个测试版本的爸爸之一。

同年6月,正式版本开始发布,其所所使用的评选标准被称为LINPACK。

自那时起,TOP500排行榜半年发布一次,告诉大家世界最强大的计算设备都在哪里。

偶然当程序员却拿下图灵奖 超算榜单之父讲述人生开挂经历-第3张图片-小猪号

这一举措解决了科学家们无法就衡量超级计算机进展的标准达成一致的问题。

负责监督美国能源部“百百亿次计算”项目的Paul Messina就表示:

“如果你不能测量它,你就不知道它是什么”,这就是为什么杰克的工作很重要。

现在,TOP500已经成为衡量超算能力的权威标准。

而排名第一的计算速度,也以摩尔定律描述的节奏稳步增长,大约每14个月就会翻倍。

天河一号,是中国第一台登上榜首 (2010年11月) 的超级计算机,它在榜首呆了六个月时间。

上月中旬,美国达拉斯举行的 SC22 会议上,第60期TOP500排行榜结果公布,排名第一的依旧是上次夺魁的Frontier。

偶然当程序员却拿下图灵奖 超算榜单之父讲述人生开挂经历-第4张图片-小猪号

中国的两台超算,神威太湖之光和天河2号,分别拿下了排行榜第7和第10位。

统计所有上榜TOP500的超算,中国共占据162台,虽较去年的173台有所下降,但仍以领先美国36台的优势,稳居世界第一的宝座。

在算力方面,美国在已部署的算力中以43.2%排名第一,中国以10.6%位列第四。

Jack Dongarra拿出了一组十分直观的数据。

现在的计算机,最快每秒是1.1 exaflops,TOP500的最后一名则是1.73 petaflops。

而Jack Dongarra的笔电是拥有M2处理器的MacBook,它的运行速度是426 gigaflops。

近30年前,第一代TOP500的榜首,属于洛斯阿拉莫斯国家实验室(LANL)用来设计核武器的计算机CM.5,它拥有一千个处理器,运行速度大约是60 gigaflops。

不用说当年的第一和今日的第一如何如何,今天家用笔电的运行速度,已经远远超过了30年前的世界最快。

好了,最后还是说回老爷子。

偶然当程序员却拿下图灵奖 超算榜单之父讲述人生开挂经历-第5张图片-小猪号

年逾七十的他,至今依然活跃在高性能计算领域的一线,今年更是夺得“计算机界的诺贝尔奖”图灵奖,其中,LINPACK,正是他拿图灵奖的获奖工作之一。

ACM总裁Gabriele Kotsis表示,Jack Dongarra是高性能计算社区中,最重要且积极参与的领导者之一。

超算的新benchmark

也是这位积极的领导者提出,超算需要新的基准测试了!

背后原因不难理解——

LINPACK基准测试强调浮点运算,它的核心是矩阵乘法。

多年以前,团队设计LINPACK时,浮点运算还是一个很重要的衡量标准。

今时今日,浮点计算已经不那么重要了。

放眼望去,所有的超算都为浮点计算做了“过量”的准备——Jack Dongarra本人是如此评判的。

是以,他认为当务之急是需要有新的基准来关心移动数据,也就是HPCG。

偶然当程序员却拿下图灵奖 超算榜单之父讲述人生开挂经历-第6张图片-小猪号

简单介绍,HPCG一个共轭梯度算法,它着眼于解决稀疏矩阵问题,而不是密集矩阵。

这恰恰满足了今时今日在实际应用中存在的问题。

相比于旧的基准HPL,HPCG能更好地反映应用程序的效果,但它给出的执行速度的数字会低很多。

究其背后的原因,是随着GPU的增强,计算机已经可以非常迅速地进行浮点运算,所以HPL得出的数据,其实是超算潜力被夸大后的结果。

相对应地,HPCG强调不是浮点数而是移动数据,这正是带宽和延迟会限制超算性能的地方。

就拿日本超算富岳(Fugaku)来说吧。

LINPACK基准测试中,富岳排名第一,达到了理论峰值的3%;而运行新基准,富岳只得到了理论峰值的0.8%。

这意味着计算机并没有发挥出它们的潜在性能,需要更仔细地进行研究。

偶然当程序员却拿下图灵奖 超算榜单之父讲述人生开挂经历-第7张图片-小猪号

有趣的一点是,TOP500超算榜上,几乎97%都在使用x86这种架构,只有5台超算使用ARM处理器。

以及,这500台超算没有任何一个使用了RISC-V。

“虽然今天它给高性能计算带来的影响很小,但也许在未来,我们可以看到RISC-V对它的影响。”Jack Dongarra说。

One More Thing

有些俗套的,在CNCC进行特邀报告演讲后,Jack Dongarra被问及“有没有经验可以介绍给年轻人”。

他的回答大约可以总结为以下三点:

追随激情,做你感兴趣的事情。

把目标定得高一点,同时做好失败的准备。

多和别人互动,或许会获取灵感也说不定吼~

责任编辑:宪瑞

标签: 程序员 计算机

抱歉,评论功能暂时关闭!