Tom Abate作者韩放 张倩参与

不学C++也能玩转超算编程,斯坦福大学推出超算编程语言Regent

超级计算机在很多前沿领域都有非常重要的应用,但其编程所需的软件过于复杂,令非程序员出身的科学家非常头疼。近日,斯坦福大学的计算机科学家开发出了一种新的编程语言,旨在降低超级计算机的编程门槛。

只有超级计算机才最有能力应对科学面临的巨大挑战,但是这些机器的编程难度却阻碍了发展。

个人电脑革命曾经改变了一切,为我们大多数人提供了易于获取、更便宜、更小、更快、更易于使用的计算机。科学家们也受益匪浅。他们开发了相应的计算机技术来研究细胞的内部运作、遥远恒星的轨道以及曾经远远超出他们观察能力的其他现象。

但是对于前沿的研究人员来说,一个具有讽刺意味的现象出现了:新的、复杂的仪器开始产生越来越多的数据,因此需要超级计算机来分析实验结果。编程这些硬件所需的软件过于复杂,以至于试图分析如此庞大的数据集的科学家们常常很难掌握。

因此,Regent 出现了,它是由斯坦福大学计算机科学家 Alex Aiken 领导的小组开发的新编程语言,它使超级计算机更容易使用。阿尔卡特朗讯通信和网络教授、粒子物理学和天体物理学以及光子科学教授 Aiken 说:「我们希望创造一个编程环境,让那些不是计算机科学家的研究人员也能使用。」

Regent 帮助解决了超级计算中最大的挑战之一:今天的超级计算机比以往任何时候都要复杂得多,现有的编程语言一直在努力跟上。在人们的想象中,超级计算机可能是一台巨大的机器,但事实上,它是由数千个微处理器组成的阵列。科学家通常用 C++来编程这些数组,C++是 40 年前的一种编程语言,在当时那个年代,主要的微处理器是中央处理单元,即 CPU。CPU 以编程人员所称的串行方式,快速地解决大问题,一个接一个地进行计算。

然而,最近,第二种微处理器已经成为超级计算的重要组成部分,它就是图形处理单元(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 说。「研究人员需要一段时间才能适应其所需的思维方式。」

但有两个因素对其有利。首先,超级计算硬件在不断改进。美国能源部(U.S.Department of Energy)正在推动其 Exascale 计算项目的发展,该项目的目标是在 2021 年左右将超级计算能力提高 50 倍。能源部正在支持软件项目,包括 Regent,以帮助编程跟上进度。

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

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

工程数据科学深度学习计算机视觉智能软件编程语言斯坦福大学超级计算机
1
相关数据
机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

学习曲线技术

在机器学习领域,学习曲线通常是表现学习准确率随着训练次数/时长/数据量的增长而变化的曲线

推荐文章
暂无评论
暂无评论~