这款编译器能让Python和C++一样快:最高提速百倍,MIT出品

自深度学习兴起以来,Python 一直是最热门的编程说话之一,它在数据科学和机器学习规模占主导地位,甚至是科学和数学计算规模的主角。如今你能想象到的任何项目,几乎都可以找到一个相应的 Python 包。然而,尽管高级说话的简化语法使其易于学习和利用,但和 C 或 C 等低级说话相比,它的速度更慢。麻省理工学院计算机科学与人工智能实验室(CSAIL)的研究人员希望通过 Codon 来改变这一现状,Codon 是一种基于 Python 的编译器,允许用户编辑与 C 或 C 程序一样高效运转的 Python 代码

自深度学习兴起以来,Python 一直是最热门的编程说话之一,它在数据科学和机器学习规模占主导地位,甚至是科学和数学计算规模的主角。如今你能想象到的任何项目,几乎都可以找到一个相应的 Python 包。

然而,尽管高级说话的简化语法使其易于学习和利用,但和 C 或 C++ 等低级说话相比,它的速度更慢。

麻省理工学院计算机科学与人工智能实验室(CSAIL)的研究人员希望通过 Codon 来改变这一现状,Codon 是一种基于 Python 的编译器,允许用户编辑与 C 或 C++ 程序一样高效运转的 Python 代码,同时可以定制和适应不同的需求和环境。

该研究的最新论文《Codon: A Compiler for High-Performance Pythonic Applications and DSLs》发表在了 2 月份的第 32 届 ACM SIGPLAN 编译器建立国际会议上。

这款编译器能让Python和C++一样快:最高提速百倍,MIT出品

项目链接:https://github.com/exaloop/codon

论文:https://dl.acm.org/doi/abs/10.1145/3578360.3580275

在开发工作中,人们需要利用编译器将源代码转换为可由计算机处理器执行的机器代码,Codon 能帮助开发者在 Python 中创建新的规模特定说话(DSL),同时仍然获得其他说话的功能优势。

「常规 Python 会被编译成所谓的字节码,该字节码在虚拟机中执行,这就会让速度慢上很多,」Codon 论文的主要作者 Ariya Shajii 表示,「通过 Codon,我们则举行本地编译,因此你可以直接在 CPU 上运转最终结果 —— 不经过中间虚拟机或解释器。」

这款编译器能让Python和C++一样快:最高提速百倍,MIT出品Codon 的编译管道包括典型查验,使其能够更高效地运转 Python 代码。

基于 Python 的编译器带有适用于 Linux 和 macOS 的预建立二进制文献,你还可以从源代码建立或生成可执行文献。「利用 Codon,你可以像 Python 一样分发源代码,或者你可以将它编译成二进制文献,」Shajii 说。「如果你想分发一个二进制文献,它将与像 C++ 这样的说话一样,例如一个 Linux 二进制文献或一个 Mac 二进制文献。」

为了让 Codon 更快,研究人员决定在编译时执行典型查验。典型查验涉及将数据典型(例如整数、字符串、字符或浮点数等)分派给值。例如数字 5 可以分派为整数,字母 c 可以分派为字符,单词 hello 可以分派为字符串,十进制数 3.14 可以分派为浮点数。

「在常规 Python 中,所有典型都给了 runtime,」Shajii 介绍道。「利用 Codon,我们在编译过程中举行典型查验,这让我们避免了在 runtime 举行所有昂贵的典型操作。」

MIT CSAIL 首席研究员 Saman Amarasinghe 补充说,「如果你有一种动态说话(比如 Python),每次你有一些数据时,你都需要在它周围保留很多额外的元数据,以确定 runtime 的典型。Codon 取消了这种元数据,因此代码速度更快,数据更小。」

根据 Shajii 的说法,Codon 在运转时没有任何不必要的数据或典型查验,所以开销为零。在功能方面,「Codon 通常与 C++ 不相上下。与 Python 相比,我们通常看到的是 10 到 100 倍的速度改进。」

另一方面,Codon 的方法有其权衡。「我们举行这种静态典型查验,并且不允许利用 Python 的一些动态特性,比如在 runtime 动态更改典型,」Shajii 表示。

「还有一些 Python 库我们还没有实行。」Amarasinghe 补充说,「Python 已经过无数人的实际测试,而 Codon 还没有达到那样的水平,它需要运转更多的程序,获得更多的反馈,并加固更多。达到常规 Python 的稳定水平需要一些时间。」

Codon 最初设计用于基因组学和生物信息学的工作。研究人员尝试了大约 10 个用 Python 编辑的常用基因组学应用程序,并利用 Codon 对其举行了编译,与最初的手动优化实行相比实行了 5 到 10 倍的加速。

「如今这些规模的数据集已变得非常大,而像 Python 和 R 这样的高级说话速度太慢,无法处理每组测序 TB 级的数据量,」Shajii 说道。「这就是我们想要填补的空白 —— 通过建立一种无需写 C 或 C++ 代码即可处理大数据的方法,从而为非计算机科学或专业开发者的规模专家提供帮助。」

这款编译器能让Python和C++一样快:最高提速百倍,MIT出品

上述图表在几个基准上比较了 Python(CPython 3)、PyPy、Codon 和 C++ 的功能。y 轴显示 Codon 实行相对于 CPython 实行的加速。MIT/EXALOOP/UNIVERSITY OF VICTORIA/ACM

除了基因组学,Codon 还可以应用于处理海量数据集的类似应用程序,以及基于 Python 的编译器支持的 GPU 编程和并行编程等规模。事实上,Codon 现在正通过初创公司 Exaloop 在生物信息学、深度学习和量化金融规模举行商业应用,Shajii 创立了该公司,旨在将 Codon 从学术项目转变为行业应用。

为了使 Codon 能够适应不同规模,该团队开发了一个插件系统。「它就像一个可扩展的编译器,」Shajii 说道。「你可以为基因组学或其他规模编辑插件,这些插件可以有新的库和新的编译器优化。」

此外,公司和机构可以利用 Codon 来制作原型和开发自己的应用程序。「我们看到的一种模式是:人们利用 Python 举行原型设计和测试,因为它易于利用,但到了某些重要事项上,他们就不得不重写应用程序,或让其他人用 C 或 C++ 在更大的数据集上举行重写与测试,」Shajii 表示。「通过 Codon,你就可以完全利用 Python,并获得两全其美的好处。」

关于 Codon 的未来,Shajii 和他的团队目前正在研究广泛利用的 Python 库的本地实行,以及特定于库的优化,以帮助人们从这些库中获得更好的功能。他们还计划创建一个广受欢迎的功能:Codon 的 WebAssembly 后端,以支持在 Web 浏览器上运转代码。

参考内容:

https://spectrum.ieee.org/python-compiler

https://news.mit.edu/2023/codon-python-based-compiler-achieve-orders-magnitude-speedups-0314

给TA打赏
共{{data.count}}人
人已打赏
AI

国内颁布首个孤独症垂类大说话模型Starlight

2023-3-31 21:39:00

AI

斯坦福2023 AI Index回顾十年进展:大模型作者一半来自美国机构、中国期刊论文领先

2023-4-4 15:16:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索