21

一种全新的、用户友好的超级计算机编程语言-InfoQ

 4 years ago
source link: https://www.infoq.cn/article/hX*Xo4cK0p9NRZXSuhB7
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一种全新的、用户友好的超级计算机编程语言

发布于:2019 年 7 月 14 日 14:56

一种全新的、用户友好的超级计算机编程语言

当今唯有超级计算机才有足够的计算能力来应对科学研究中那些最顶尖的挑战,但在这些超级机器上进行编程却很艰难,这对科学探索而言是一种阻碍。

几十年前,计算机也曾成本昂贵、操作复杂、数量稀少。而个人电脑(PC)的革命改变了这一切,这场革命为我们大多数人提供了易于获得的微型电脑设备,而且比之前的庞然大物更便宜、更小、更快、更容易使用。科学家们也从这场革命中受益匪浅。例如,科研人员开发出基于计算机的技术来研究诸如细胞的内部运作,行星围绕遥远恒星的轨道,以及其他曾经远远超出他们自身观察能力的现象。

但对于处于前沿学科的科研人员来说,出现了一种颇具讽刺意味的现象:那些新型的、复杂的仪器生产出如此之多的数据,以至于需要使用超级计算机来分析这些实验结果。而试图分析如此海量数据的那些科学家,往往又难以掌握在这些超级计算机硬件上编写所需复杂软件的技能。

这时,Regent(摄政王)编程语言问世了,由斯坦福大学计算机科学家 Alex Aiken 所领导的团队开发的一种新型编程语言。与其他编程语言相比,Regent 让超级计算机的使用变得更容易。这位 Alcatel-Lucent 的通信和网络教授 Aiken 表示:“我们希望打造一种编程环境,在这种环境下并不要求每位科研人员都必须成为计算机科学家。”

Regent 有效地解决了超级计算机面临的最大挑战之一:当今超级计算机比以往任何时候计算机的复杂性都要高得多,现有所有编程语言也难以跟上其发展步伐。在大众的想象中,超级计算机可能是一整台巨大的机器,但实际上它是由成千上万个微处理器组成的阵列。科学家们通常使用 C++ 语言来为这些处理器阵列编写程序,而 C++ 这种软件编程语言发明于大约 40 年前,已经算得上是计算机科学时代一个经久不衰的传奇了。但当 C++ 语言发明出来时,那时候主要的微处理器是中央处理器,简称 CPU,也正是 CPU 引发了 PC 革命。CPU 可以快速地解决许多复杂问题,对这些问题逐个进行计算,程序员称之为串行方式。

然而,最近对于超级计算而言,另一种微处理器也有了重要的地位,这种微处理器就是图形处理器,简称 GPU。GPU 最初被用于控制计算机屏幕上数以百万计的像素点,以改善电脑游戏的视觉效果,GPU 可以同时处理许多相似的计算,程序员称之为并行处理。并行处理已被证明在机器学习等应用程序中极其有用。而 C++ 语言也得到了相应的升级,以跟上这些以及其他硬件的发展变化。但遗憾的是,不断增加的补丁使得该编程语言越来越难用。然而,Regent 语言使超级计算机程序员能够更容易地处理这些事情,将串行处理任务分配给 CPU,将并行处理任务分配给 GPU。

一旦 Regent 在概念层面上构建了程序,程序员的意图就会被转译,或者用技术术语来说,程序会被被编译,然后成为第二层软件,称作 Legion(军团),这也是由 Aiken 及其团队开发的。Legion 会生成机器码,用精确的指令来指示超级计算机的硬件如何来执行这个程序。Regent 和 Legion 之间有紧密的集成,这使得程序员做其他重要的决定变得更容易,尤其是,在哪里存储超级计算机需要分析的数据。

SLAC 国家加速器实验室的科学家 Elliott Slaughter 几乎是从 Regent 和 Legion 问世起初就开始使用这两种编程语言,他评价说,这两层软件之间的集成为程序员节省了大量金钱和时间。电脑执行计算要消耗能源,这是有成本的。但是,相比之下,搬移数据所消耗的能源成本可能是对这些数据执行计算的成本的 100 倍。而且,大型实验往往很依赖那些收集海量数据的仪器。Slaughter 说,有一些仪器每秒可以收集相当于 20 张 DVD 的数据用于持续 15 分钟的实验。即使通过光纤以光速传输数据,超级计算机从仪器获得如此海量的数据也可能造成滞后,从而使科研分析工作陷入一片混乱。Slaughter 说:“你把数据储存在何处,往往是程序员最重要的决定之一。” Regent 和 Legion 让程序员可以在等待计算的同时,对在何处存储数据具有前所未有的控制能力,从而节省了大量金钱和时间。

他说:“你可以先编写计算任务的程序,稍后再安置数据,这非常容易,且不需要重新编写代码。”

Regent 会变得广为流行吗?科研人员说,新的语言必须得克服惯性的显著影响。“Regent 是一种非常与众不同的编程方式,” Aiken 说,“而科研人员需要一段时间才能调整到接受这个新变化所需的心态。”

但有两个因素对这种新型编程语言的发展有利。首先,超级计算硬件依然在不断进步。美国能源部正在推动其百万兆级计算项目的发展,该项目的目标是在 2021 年左右实现超级计算能力 50 倍的增长。能源部正在支持包括 Regent 在内的软件项目,以帮助编程跟上硬件的发展步伐。

此外,许多想要使用超级计算机的科学家并不熟悉当前的编程工具,而且对编写大型实验程序所需的陡峭学习曲线持有怀疑态度。即使是经验丰富的超级计算机程序员,也可能发现当前的系统很累赘笨重,想知道是否有更好的方法。“我们定期与科学家们交流,让他们意识到 Regent 可以让他们的生活变得多么简单,”Aiken 说。

原文链接:

https://engineering.stanford.edu/magazine/article/new-more-user-friendly-language-programming-supercomputers

3710a7e3117c09108ca2946f92a43d5f.jpg

阅读数:6830 发布于:2019 年 7 月 14 日 14:56

文章版权归极客邦科技 InfoQ 所有,未经许可不得转载。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK