DeepMind 发布了 S6 的源代码,SXNUMX 是 Python 的 JIT 编译器

s6-深度思维

S6,是用于 CPython 的独立 JIT 编译器库

深思熟虑, 以其在人工智能领域的发展而闻名,最近宣布 已决定发布S6项目的源代码,这是他从 Python 语言的 JIT 编译器开发的。

这个项目很有趣 因为 被设计为扩展库 它可以与标准 CPython 集成,其中 提供完整的 CPython 兼容性并且不需要修改 的解释器代码。 该项目自 2019 年以来一直在开发中,但不幸的是已缩减规模,不再开发。

S6 是 DeepMind 于 2019 年启动的一个项目,旨在通过即时(“JIT”)编译来加速 CPython。 这些函数将作为一个普通的 Python 库提供,不需要对 CPython 解释器进行任何更改。 S6 打算为 Python 做 V8 为 Javascript 做的事情(这个名字是对 V8 的致敬)。 这项工作基于 CPython 3.7 版。 根据工作负载,我们在常见基准测试中看到了高达 9.5 倍的加速。

决定发布源代码的主要原因,如前所述,其中一个原因是该项目停止了支持,另一个主要原因是,基于所创建的开发,这些仍然可以用于改进 python .

我们已经在内部停止了 S6 的工作。 因此,此存储库已存档,我们不接受拉取请求或问题。 我们开源并在下面提供了设计概述,以激发 Python 社区内的对话并激发未来改进 Python 的工作。

关于S6的操作,要提一下 用于 Python 的 S6 与用于 JavaScript 的 V8 引擎比较 就它解决的任务而言。 该库将现有的 ceval.c 字节码解释器驱动程序替换为自己的实现,该实现使用 JIT 编译来加速执行。

S6 检查当前函数是否已经编译 如果是,则执行编译后的代码,如果不是,则以类似于 CPython 解释器的字节码解释模式执行函数。 解释计算与正在处理的函数相关联的执行语句和调用的数量。

达到某个里程碑后,开始构建过程以加快代码速度 经常运行。 对 strongjit 中间表示进行编译,经过优化后,使用 asmjit 库将其转换为目标系统机器指令。

根据负载的性质,在最佳条件下,与常规 CPython 相比,S6 的测试执行速度提高了 9,5 倍。

当执行 100 次迭代时 来自理查兹测试套件, 有7倍的加速度, 当运行包含大量数学的 Raytrace 测试时,它的速度提高了 3 到 4,5 倍。

难以优化的任务 与 S6 是使用 C API 的项目,比如NumPy,还有相关的操作需要检查大量值的类型。

单个函数调用的性能也很差 由于使用了 S6 Python 解释器的未优化实现(开发尚未达到解释模式优化阶段),从而消耗大量资源。

例如,在解包大量数组/元组的解包序列测试中,单个调用显示最多 5 倍的减速,而循环调用从 CPython 产生 0,97。

最后 对于那些有兴趣了解更多信息的人,你应该知道JIT编译器代码是用C++编写的,目前是基于CPython 3.7,另外源代码已经在Apache 2.0许可下开放,可以查阅 从下面的链接。


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。