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

更新日期: 2019-07-14阅读: 1.9k标签: 语言

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

几十年前,计算机也曾成本昂贵、操作复杂、数量稀少。而个人电脑(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


链接: https://www.fly63.com/article/detial/4176

vue.js实现多语言_vue.js国际化 vue-i18n插件的使用

在项目开发中遇到需要多语言的支持,在Vue项目中有对应的组件vue-i18n,而且对项目的代码修改不大.这篇文章讲解vue-i18n的安装和使用,语言包的生成 & 替换项目中原有的静态文本

web网页多语言的实现方案_前端实现多语言切换

需要在web中实现多语言的切换,当用户语言切换完成后下次重新打开网页,也是上次设置的语言进行显示。在用户点击切换语言后,把选择的语言版本保存在cookie中;定义语言的标识+内容的json字符串

JavaScript中的黑话

因为球是圆的,所以不论发生什么都有可能,对这点我是深信不疑的,但最近我总是在怀疑,JavaScript也是圆的!本文带你细数JavaScript的黑话,因为这一切是多么的有趣,又是多么的无意义,就如这世界一般,很多事情只有当你了解过,才能做出错误的选择。

10个编译为JavaScript的语言

你不用写一行Javascript或者考虑这种语言的局限,就能生产在浏览器能运行的代码。这篇文章包括了十种有趣的语言能够编译为Javascript,在浏览器或者Node.js中被执行

这三个新特性可能改变JavaScript未来

你想不想知道下一波令人兴奋无比的 JavaScript 特性?你甚至都不知道自己需要这些特性。现在,我要向你展示三个可能会改变你编写 JavaScript 代码方式的提案。这些提案中有很多方面仍未最终确定。

7种主流编程语言的优点和缺点对比

7种主流编程语言:Python需要拿着游标卡尺学习的语言 ,C/C++大多数中国程序员的第一个语言 ,Java最长寿的语言 ,C#自称不是 Java 的 Java 语言 ,JavaScript 不是 Java 语言的语言 ,SQL数据库离不开的语言 ,PHP 世界上最好的语言

JavaScript 的现状_以及对 JavaScript 的批评有哪些呢?

JavaScript 已经成为了一门一流的编程语言,使用 JavaScript 的程序员们正变得无所不能。质疑 JavaScript 是否是一种「真正的」编程语言的时代已经过去,现在的问题是,你有没有准备好投入到这门语言中,进行真正的学习。

学习编程开发_如何学习并掌握一门计算机编程语言

如果你有兴趣编写计算机程序,移动APP,网站,游戏或者任何软件,你应该学习编程。编程语言撰写的代码构建了计算机的程序。无论对于何种计算机编程语言,其核心编程思想都是一样的

前端国际化的另类方式

一个项目发展到一定的环境或者一开始就是为多国打造的,就需要考虑国际化了。简单来说,就是一套页面,多套语言。主要探讨了两种完全不同的国际化方式,前一种主流,后一种完全属于另类,但还是有用武之地的。如果你的页面不太复杂,完全可以采取这种方式。

编程语言排行榜

对于程序员来说,选择一门适合自己,适合职业发展的编程语言也是同等重要。各大编程语言的受欢迎程度、学习的人群数量,以及由于人工智能的兴起,最热门的编程语言排行榜也发生了变化。让我们来看看。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!