斯坦福大学开发了一种新的语言Regent,用于超级计算机的编程。用户可以先对计算任务进行编程,再定位数据,非常方便,无需重写代码。科学家们想要创建一个不需要每个研究人员都是计算机科学家的编程环境。尖端科学的巨大挑战只能由超级计算机来应对,但这些机器的难度已成为进步的障碍。几十年前,计算机价格昂贵、复杂且稀有。但PC革命改变了这一点,为大多数人提供了体积更小、速度更快、更易于使用、更易于访问且更便宜的计算机,科学家也从中受益。他们开发了计算机技术来研究细胞的内部运作、遥远恒星中行星的轨道以及其他远远超出他们观察能力的现象。但对于处于前沿的研究人员来说,新型精密仪器开始产生越来越多的数据,需要超级计算机来分析实验结果。对这些硬件进行编程所需的软件过于复杂,而且对于试图分析这些庞大数据集的科学家来说往往很困难。但好消息来了。Regent是一种新的编程语言,由斯坦福大学计算机科学家AlexAiken领导的团队开发,将使超级计算机编程更易于使用。“我们希望创建一个编程环境,不需要每个研究人员都是计算机科学家,”艾肯说,他是阿尔卡特朗讯通信和网络教授,也是粒子物理学和天体物理学以及光子科学教授。Regent帮助解决超级计算领域面临的最大挑战。超级计算机比以往任何时候都复杂得多,当前的编程语言也难以跟上。说到超级计算机,可能出现在大众脑海中的是类似于黑客帝国的巨型机器,但它实际上是由数千个微处理器组成的阵列。科学家通常使用C++对这些数组进行编程。C++是40年前的一种编程语言,在那个主要微处理器是中央处理器或CPU的时代。CPU可以快速解决问题,一个接一个地计算,程序员称之为串行方法。但是现在,第二种类型的微处理器对于超级计算、图形处理单元或GPU已经变得很重要。最初是玩电脑游戏时控制屏幕上无数个像素点,进行并行计算。并行处理已被证明在机器学习等应用程序中非常有用。C++已经升级以跟上这波硬件变化。不幸的是,补丁的添加使该语言越来越难以使用。而Regent可以让超级计算机程序员更容易地做一些事情,比如将串行处理任务分配给CPU,将并行处理任务分配给GPU。一旦Regent在概念层面构建了程序,程序员的意图就会被编译到称为Legion的第二个软件层中。Legion生成机器代码,即指示超级计算机硬件如何执行程序的精确指令。Regent和Legion之间的紧密集成使程序员更容易做出其他重要决定;值得注意的是,超级计算机必须分析的数据应该存储在哪里。几乎从一开始就致力于Regent和Legion的SLAC国家加速器实验室的科学家ElliottSlaughter表示,两层之间的集成可以节省程序员的金钱和时间。计算机消耗能源,成本高,移动数据的成本可能是对该数据执行计算成本的100倍。此外,大型实验通常依赖于收集大量数据的仪器。Slaughter说,对于持续15分钟的实验,一些仪器每秒可以收集相当于20张DVD的数据。从仪器到超级计算机获取大量数据可能会导致延迟,即使在以光速在光纤上传输时也是如此,这可能会中断分析。“在何处存储数据是程序员需要做出的重要决定,”Slaughter说。Regent和Legion通过让程序员在等待计算时完全控制存储数据来节省金钱和时间。“你可以先进行计算,然后在不重写代码的情况下轻松定位数据,”他说。Regent会流行起来吗?研究人员说,新语言必须克服很多惰性。“这是一种非常不同的编程方式,”艾肯说。“研究人员需要一段时间才能采用所需的心态。”但有两个因素对其有利。一是超级计算硬件的持续改进。美国能源部正在推动其Exascale计算项目的发展,该项目的目标是在2021年左右将超级计算能力提高50倍。能源部正在支持包括Regent在内的软件项目,以帮助保持编程同步。此外,许多想要使用超级计算机的科学家不熟悉当前的工具,并对大型实验编程所需的陡峭学习曲线持怀疑态度。即使是经验丰富的超级计算机程序员也可能会觉得当前的系统很笨重,想知道是否有更好的方法。“我们经常与意识到Regent让他们的生活更轻松的科学家交谈,”艾肯说。》参考链接:https://engineering.stanford.edu/magazine/article/new-more-user-friendly-language-programming-supercomputers
