首页 >> 生活 >

基于Python的编译器实现了数量级的加速

2023-03-15 14:43:59 来源: 用户: 

2018年,《经济学人》发表了一篇关于编程语言Python的深度文章。“在过去的12个月里,”文章说,“美国的谷歌用户搜索Python的次数超过了KimKardashian。”真人秀明星,要小心了。

这种高级语言也广受欢迎,每天都有大量用户涌向该语言,因为它的易用性部分归功于其简单易学的语法。这促使麻省理工学院计算机科学与人工智能实验室(CSAIL)和其他地方的研究人员制作了一种工具,以帮助更高效地运行Python代码,同时允许定制和适应不同的需求和环境。编译器是一种软件工具,可将源代码转换为可由计算机处理器执行的机器代码,它允许开发人员在Python中创建新的领域特定语言(DSL)——这通常比C或C等语言慢几个数量级C++——同时仍然获得其他语言的性能优势。

DSL是为特定任务量身定制的专用语言,比通用编程语言更容易使用。然而,从头开始创建一个新的DSL可能有点令人头疼。

“我们意识到人们不一定想学习一门新语言或一种新工具,尤其是那些非技术人员。所以我们想,让我们采用Python语法、语义和库,并将它们合并到一个由从头开始,”AriyaShajii博士说。,关于该团队的新系统Codon的新论文的主要作者。“用户只需像他们习惯的那样编写Python,而不必担心我们自动处理的数据类型或性能——结果是他们的代码运行速度比普通Python快10到100倍。Codon已经被使用在量化金融、生物信息学和深度学习等领域具有商业价值。”

该团队对Codon进行了一些严格的测试,结果超出了它的重量。具体来说,他们采用了大约10个用Python编写的常用基因组学应用程序,并使用Codon对其进行了编译,与最初的手动优化实现相比实现了5到10倍的加速。除了基因组学,他们还探索了量化金融领域的应用,该领域还处理大数据集并大量使用Python。Codon平台还有一个并行后端,让用户可以编写可以为GPU或多核显式编译的Python代码,这些任务传统上需要低级编程专业知识。

飞机上的蟒蛇

与C和C++等语言都带有编译器来优化生成的代码以提高其性能不同,Python是一种解释型语言。为了使Python更快,人们付出了很多努力,该团队表示这通常以“自上而下的方法”的形式出现,这意味着采用普通Python实现并结合各种优化或“即时”"编译技术——一种在执行期间编译性能关键代码段的方法。这些方法擅长保持向后兼容性,但极大地限制了您可以获得的加速类型。

“我们更多地采用了自下而上的方法,我们从头开始实施所有内容,虽然有局限性,但灵活性更高,”Shajii说。“因此,例如,我们不能支持某些动态特性,但我们可以使用优化和其他静态编译技术,而这些是您无法从标准Python实现开始的。这是关键的区别——没有太多的努力采用自下而上的方法,其中大部分Python基础设施都是从头开始构建的。”

第一个难题是向编译器提供一段Python代码。执行的关键第一步之一称为“类型检查”,这是一个在您的程序中找出每个变量或函数的不同数据类型的过程。例如,有些可能是整数,有些可能是字符串,有些可能是浮点数——这是常规Python不会做的事情。在常规Python中,您必须在运行程序时处理所有这些信息,这是导致它如此缓慢的因素之一。Codon的部分创新是该工具在运行程序之前进行这种类型检查。这让编译器将代码转换为本机机器代码,从而避免了Python在运行时处理数据类型的所有开销。

“Python是非编程专家的领域专家的首选语言。如果他们编写了一个流行的程序,并且许多人开始使用它并运行越来越大的数据集,那么Python的性能不足将成为一个关键障碍成功,”麻省理工学院电气工程和计算机科学教授兼CSAIL首席研究员SamanAmarasinghe说。“无需使用像NumPy这样的C实现的库重写程序或完全用像C的语言重写,Codon可以使用相同的Python实现并提供与用C重写时相同的性能。因此,我相信对于因性能不足而达到极限的Python应用程序,Codon是成功的最简单途径。”

比C的速度还快

另一个难题是编译器中的优化。例如,使用基因组学插件将执行其自己的一组特定于该计算域的优化,例如涉及处理基因组序列和其他生物数据。结果是一个可执行文件以C或C++的速度运行,甚至在应用特定领域的优化后更快。

虽然Codon目前涵盖了相当大的Python子集,但它仍然需要合并一些动态特性并扩展其Python库的覆盖范围。Codon团队正在努力进一步缩小与Python的差距,并期待在未来几个月内发布多项新功能。Codon目前在GitHub上公开可用。

除了Amarasinghe之外,Shajii还与前CSAIL学生、现任JumpTrading软件工程师GabrielRamirez一起撰写了这篇论文;JessicaRay,麻省理工学院林肯实验室副研究员;BonnieBerger,麻省理工学院数学、电气工程和计算机科学教授,CSAIL首席研究员;HarisSmajlović,维多利亚大学研究生;IbrahimNumanagić,维多利亚大学计算机科学助理教授和加拿大研究。

该研究在ACMSIGPLAN2023编译器构建国际会议上发表,并作为CC2023的一部分发表:第32届ACMSIGPLAN编译器构建国际会议论文集。

  免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!

 
分享:
最新文章