C++无法满足超算编程需求,斯坦福研发专用语言Regent

斯坦福大学开发出一种用于编程超级计算机的新语言Regent。用户可以先编程计算任务,然后再定位数据,非常容易,而且无需重新编写代码。科学家希望创建一个不需要每个研究人员成为计算机科学家的编程环境。

最前沿科学领域的巨大挑战只有超级计算机能够应对,但这些机器的难度却成了前进的阻碍。

几十年前,计算机成本高昂,复杂且罕见。但是PC革命改变了这一点,为大多数人提供了更小、更快、更容易使用、更易于获取且更便宜的计算机,科学家们因此受益匪浅。他们开发了计算机技术来研究细胞的内部运作、遥远恒星的行星轨道、以及远远超出其观察能力的其他现象。

但对于处于最前沿的研究人员来说,新式复杂的仪器开始产生越来越多的数据,需要用到超级计算机来分析实验结果。给这些硬件编程所需软件太复杂了,另试图分析这些庞大数据集的科学家们常常难以掌握。

C++无法满足超算编程需求,斯坦福研发专用语言Regent

不过好消息来了。Regent,一门由斯坦福大学计算机科学家Alex Aiken领导的小组开发的新编程语言,将使得超级计算机编程更易于使用。

“我们希望创建一个不需要每个研究人员成为计算机科学家的编程环境,”阿尔卡特朗讯通信和网络教授,粒子物理学和天体物理学以及光子科学教授Aiken说。

Regent有助于解决超级计算领域面临的最大挑战。超级计算机比以往任何时候都复杂得多,当前的编程语言一直在努力跟上步伐。提到超级计算机,大众的脑海中可能会浮现出一台类似黑客帝国Matrix的巨型机器,但它实际上是由数千个微处理器组成的数组。

科学家通常使用C++对这些阵列进行编程。C++是40年前的一种编程语言,在当时那个年代,主要的微处理器是中央处理单元即CPU。CPU可以快速的解决问题,一个接一个地计算,程序员称之为串行方式。

但是现在,第二种类型的微处理器对于超级计算变得重要,即图形处理单元或GPU。一开始是为了玩电脑游戏时,控制屏幕上无可计数的像素点,可以执行并行计算。

事实证明,并行处理在机器学习等应用中非常有用。C++已经升级,以跟上这波硬件的变化。不幸的是,补丁的增加使语言越来越难以使用。而Regent能够让超级计算机的程序员更容易做一些事情,比如将串行处理任务分配给CPU,将并行处理任务分配给GPU。

一旦Regent在概念层面上构建了程序,程序员的意图就会被编译成一个名为Legion的第二个软件层。

Legion生成机器代码,用来指导超级计算机硬件如何执行程序的精确指令。Regent和Legion之间的紧密集成使程序员更容易做出其他重要决定; 值得注意的是,存储超级计算机必须分析的数据的位置。

Elliott Slaughter是SLAC国家加速器实验室的科学家,他几乎从一开始就在Regent和Legion工作过,他表示两层之间的整合可以节省程序员的金钱和时间。计算机消耗能源,这需要成本,移动数据的成本可能是对该数据执行计算的成本的100倍。

此外,大型实验通常依赖于收集大量数据的仪器。Slaughter表示,一些仪器可以每秒收集相当于20个DVD的数据,用于持续15分钟的实验。即使以光速在光纤上移动,从仪器到超级计算机获取大量数据也可能产生滞后,这可能会破坏分析。

“把数据存储在什么地方,是程序员需要做出的重要抉择,”Slaughter说。Regent和Legion通过为程序员提供前所未有的控制权来节省金钱和时间,以便在等待计算时存储数据。

“你可以先执行计算任务,然后在不重写代码的情况下轻松定位数据,”他说。

Regent会流行吗?研究人员表示,新语言必须克服大量的惯性。“这是一种非常不同的编程方式,”Aiken说。“研究人员需要一段时间才能采用所需的思维模式。”

但有两个因素对它有利。首先,超级计算硬件的继续改进。美国能源部正在推动其Exascale计算项目的发展,该项目的目标是在2021年左右实现超级计算能力的50倍增长。能源部正在支持软件项目,包括Regent,以帮助编程保持同步。

此外,许多想要使用超级计算机的科学家不熟悉当前的工具,并对编写大型实验所需的陡峭学习曲线持怀疑态度。即使是经验丰富的超级计算机程序员也可能会发现当前系统很麻烦,并想知道是否有更好的方法。Aiken说:“我们经常与那些意识到Regent为他们生活更轻松的科学家交谈。”

相关推荐