一种用于编程超级计算机的新的 更加用户友好的语言


几十年前,计算机成本高昂,复杂且罕见 。
个人计算机革命改变了这一切,为我们大多数人提供了更容易访问和更便宜的小工具,更小,更快,更容易使用 。科学家们也受益匪浅 。他们开发了计算机化技术来研究细胞的内部运作,绕着遥远恒星的行星轨道以及远远超出其观察能力的其他现象 。
但对于处于最前沿的研究人员来说,已经出现了一些讽刺:新的和复杂的仪器开始产生如此多的数据,超级计算机需要分析实验结果 。试图分析如此庞大的数据集的科学家们常常难以掌握编程硬件所需软件的复杂性 。
输入Regent,一种由斯坦福大学计算机科学家Alex Aiken领导的小组开发的新编程语言 。除此之外,Regent使超级计算机更易于使用 。“我们希望创建一个不需要每个研究人员成为计算机科学家的编程环境,”阿尔卡特朗讯通信和网络教授Aiken说 。
【一种用于编程超级计算机的新的 更加用户友好的语言】Regent帮助解决了超级计算领域面临的最大挑战之一:今天的超级计算机比以往任何时候都复杂得多,现有的编程语言一直在努力跟上步伐 。超级计算机可能会出现在大众想象中,成为一台巨型机器,但它实际上是由数千个微处理器组成的阵列 。科学家通常使用C ++对这些阵列进行编程,C ++是大约40年前发明的一种软件语言 - 在计算机科学时代就是这样 。当时,主要的微处理器是处理单元,即CPU,即推动PC革命的芯片 。CPU可以快速解决大问题,一个接一个地计算,程序员称之为串行方式 。
然而,最近,第二种类型的微处理器对于超级计算变得重要:图形处理单元或GPU 。首先用于控制计算机屏幕上的数百万像素以改善视频游戏的视觉效果,GPU可以同时或并行地执行许多类似的计算,正如程序员所说的那样 。事实证明,并行处理在机器学习等应用中非常有用 。C ++已经升级,以跟上这些和其他硬件的变化 。不幸的是,补丁的增加使语言越来越难以使用 。但是,Regent使超级计算机程序员更容易做一些事情,比如将串行处理任务分配给CPU,并将并行处理任务分配给GPU 。
一旦Regent在概念层面上构建了程序,程序员的意图就会被翻译 - 或者,使用技术术语,编译成第二个名为Legion的软件层,Aiken也开发了这个层 。Legion生成机器代码 - 精确指令,指导超级计算机的硬件如何执行程序 。Regent和Legion之间的紧密集成使程序员更容易做出其他重要决定; 值得注意的是,存储超级计算机必须分析的数据的位置 。
Elliott Slaughter是SLAC加速器实验室的科学家,他几乎从一开始就在Regent和Legion工作过,他表示两层之间的整合可以节省程序员的金钱和时间 。计算机消耗能源,这需要成本 。但是,移动数据的能源成本可能是对该数据执行计算的成本的100倍 。此外,大型实验通常依赖于收集大量数据的仪器 。Slaughter表示,一些仪器可以每秒收集相当于20个视频DVD的数据,用于持续15分钟的实验 。即使以光速在光纤上移动,从仪器到超级计算机获取大量数据也可能产生滞后,这可能会破坏分析 。“你把数据放在哪里是最多的程序员做出的重要决定,“Slaughter说.Regent和Legion通过让程序员在等待计算时对数据存储位置进行前所未有的控制来节省金钱和时间 。
丽晶会变得普遍吗?研究人员表示,新语言必须克服大量的惯性 。“摄政是一种非常不同的编程方式,”艾肯说 。“研究人员需要一段时间才能采用所需的思维模式 。”
但有两个因素对它有利 。首先,超级计算硬件继续改进 。能源部正在通过其Exascale计算项目推动开发,该计划旨在实现2021年左右的超级计算能力增加50倍 。能源部正在支持软件项目,包括Regent,以帮助编程保持同步 。
此外,许多想要使用超级计算机的科学家不熟悉当前的工具,并对编写大型实验所需的陡峭学习曲线持怀疑态度 。即使是经验丰富的超级计算机程序员也可能会发现当前系统很麻烦,并想知道是否有更好的方法 。艾肯说:“我们经常与那些意识到丽晶为他们生活更轻松的科学家交谈 。”

    推荐阅读