返回顶部
首页
时尚 | 生活 | 工具 | 诗词 |
您现在的位置:
首页 数码 详细信息
该技术显著提高了在Unix shell中运行的程序的速度
2022-06-07    阅读量:33522    新闻来源:互联网     |  投稿

研究人员开创了一种技术,这种技术可以显著地自动加速某些类型的计算机程序,同时确保程序结果保持准确。

他们的系统提高了在Unix shell中运行的程序的速度,Unix shell是50年前创建的一种无处不在的编程环境,如今仍在广泛使用。他们的方法将这些程序并行化,这意味着它将程序组件拆分为可以在多个计算机处理器上同时运行的部分。

这使程序能够在原始运行时的一小部分时间内执行web索引、自然语言处理或分析数据等任务。

麻省理工学院计算机科学和人工智能实验室(CSAIL)的研究科学家尼科斯·瓦西里基斯(Nikos Vasilakis)说:“有很多人使用这些类型的程序,比如数据科学家、生物学家、工程师和经济学家。现在他们可以自动加速程序,而不用担心会得到错误的结果。”。

该系统还为开发数据科学家、生物学家、工程师和其他人使用的工具的程序员提供了便利。Vasilakis补充道,他们不需要对自己的程序命令进行任何特殊调整,就可以实现这种自动、无错误的并行化。Vasilakis是一个由来自世界各地的研究人员组成的委员会的主席,这些研究人员已经在该系统上工作了近两年。

Vasilakis是该组织最新研究论文的资深作者,该论文包括麻省理工学院合著者和CSAIL研究生Tammam Mustafa,并将在USENIX操作系统设计与实现研讨会上发表。合著者包括主要作者康斯坦蒂诺斯·卡拉斯,宾夕法尼亚大学研究生;Jan Bielak,华沙Staszic高中学生;迪米特里斯·卡尼基斯,Aarno实验室的软件工程师;Thurston H.Y.Dang,前麻省理工学院博士后,现为谷歌软件工程师;以及史蒂文斯理工学院计算机科学助理教授迈克尔·格林伯格。

几十年前的问题

这个新系统称为PaSh,主要关注在Unix shell中运行的程序或脚本。脚本是指示计算机执行计算的一系列命令。shell脚本的正确和自动并行化是研究人员几十年来一直努力解决的一个棘手问题。

Unix shell仍然很受欢迎,部分原因是它是唯一一个允许一个脚本由多种编程语言编写的函数组成的编程环境。不同的编程语言更适合特定的任务或数据类型;如果开发人员使用正确的语言,解决问题就会容易得多。

瓦西里基斯补充道:“人们也喜欢用不同的编程语言进行开发,所以将所有这些组件组合到一个程序中是经常发生的事情。”。

虽然Unix shell支持多语言脚本,但其灵活的动态结构使这些脚本难以使用传统方法并行化。

并行化程序通常很棘手,因为程序的某些部分依赖于其他部分。这决定了组件必须运行的顺序;如果顺序错误,程序就会失败。

当一个程序用一种语言编写时,开发人员有关于其特性和语言的明确信息,这些信息可以帮助他们确定哪些组件可以并行化。但是这些工具在Unix shell中不适用于脚本。用户无法轻松看到组件内部发生的情况,也无法提取有助于并行化的信息。

及时解决方案

为了克服这个问题,PaSh使用了一个预处理步骤,将简单的注释插入到它认为可以并行化的程序组件中。然后,PaSh尝试在程序运行时,在它到达每个组件的确切时刻,并行化脚本的这些部分。

这避免了shell编程中的另一个问题鈥攊不可能提前预测程序的行为。

通过“及时”并行化程序组件,系统避免了这个问题。与试图提前执行并行化的传统方法相比,它能够有效地加速更多的组件。

实时并行化还确保了加速程序仍能返回准确的结果。如果PaSh到达一个无法并行化的程序组件(可能它依赖于一个尚未运行的组件),它只需运行原始版本,避免引起错误。

“无论性能优势如何鈥攊如果你答应在一秒钟而不是一年内完成某件事鈥攊如果有任何可能返回错误的结果,没有人会使用你的方法,”瓦西里基斯说。

用户无需进行任何修改即可使用PaSh;他们可以将该工具添加到现有的Unix shell中,并告诉脚本使用它。

加速度和精度

研究人员在数百个脚本上对PaSh进行了测试,从古典到现代的程序都有,但没有一个脚本被破坏。与未经配置的脚本相比,该系统运行程序的速度平均提高了六倍,并且实现了近34倍的最大加速。

它还提高了其他方法无法并行化的脚本速度。

Vasilakis说:“我们的系统是第一个显示这种完全正确的转换的系统,但也有间接的好处。我们的系统的设计方式允许行业中的其他研究人员和用户在这项工作的基础上进行构建。”。

他很高兴从用户那里得到更多反馈,并看到他们如何改进系统。这个开源项目去年加入了Linux基金会,使其在工业界和学术界的用户中广泛可用。

接下来,瓦西里基斯希望利用PaSh解决分销问题鈥攄使程序在多台计算机上运行,而不是在一台计算机中运行多个处理器。他还希望改进注释方案,使其更加用户友好,并能更好地描述复杂的程序组件。

“Unix shell脚本在数据分析和软件工程任务中起着关键作用。这些脚本可以通过使它们调用的各种程序利用现代CPU中可用的多个处理单元来更快地运行。然而,shell的动态特性使得很难提前设计并行执行计划,”Diomidis Spinellis说,雅典经济和商业大学软件工程教授和代尔夫特技术大学软件分析教授,未参与此项研究。“通过实时分析,PaSh JIT成功地克服了shell的动态复杂性,从而减少了脚本执行时间,同时保持了相应结果的正确性。”

达特茅斯学院(Dartmouth College)计算机科学系副教授道格拉斯·麦克罗伊(DouglasMcIlroy)补充道:“作为协调步骤但不重新排序或拆分步骤的普通shell的替代品,PaSh提供了一种轻松的方式来提高大数据处理工作的性能。”,他曾领导贝尔实验室(Unix操作系统的诞生地)的计算技术研究部门。“利用并行性的手动优化必须在普通编程语言(包括shell)所适用的级别上进行不要提供清晰的抽象概念。生成的代码混合了逻辑和效率问题。面对不断变化的需求,它很难阅读,也很难维护。PaSh巧妙地在这一级别介入,保留了表面上的原始逻辑,同时在程序运行时实现了效率。"

这篇文章由麻省理工学院新闻网(web.MIT.edu/newoffice/)转载,该网站是一个受欢迎的网站,涵盖了有关麻省理工学院研究、创新和教学的新闻。

标签:
免责声明:本文仅代表作者本人观点,与中网风格,stylechina.com无关。本网对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。本网转载自其它媒体的信息,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请在一周内进行,以便我们及时处理。客服邮箱:23341571@qq.com | 客服QQ:23341571
全站地图 | 二级目录 | 上链请联系业务QQ:23341571 或 业务微信:kevinhouitpro