DeepMind が Python 用 JIT コンパイラ S6 のソースコードを公開

S6-ディープマインド

S6 は、CPython 用のスタンドアロン JIT コンパイラ ライブラリです。

ディープマインド、 人工知能の分野での開発で知られる、最近発表した S6 プロジェクトのソースコードをリリースすることを決定しましたこれは、彼が Python 言語用の JIT コンパイラから開発したものです。

プロジェクトは面白い なぜなら 拡張ライブラリとして設計されています これは、標準の CPython と統合できます。 完全な CPython 互換性を提供し、変更を必要としません インタプリタコードの。 このプロジェクトは 2019 年から開発されていますが、残念ながら規模が縮小されており、現在は開発されていません。

S6 は、ジャストインタイム (「JIT」) コンパイルで CPython を高速化するために、2019 年に DeepMind 内で開始されたプロジェクトです。 これらの関数は通常の Python ライブラリとして提供され、CPython インタープリターを変更する必要はありません。 S6 は、V8 が Javascript に対して行ったことを Python に対して行うことを意図していました (名前は V8 へのオマージュです)。 作業は CPython バージョン 3.7 に基づいていました。 ワークロードに応じて、一般的なベンチマークで最大 9.5 倍のスピードアップが見られました。

ソースコードをリリースすることを決定した主な理由の XNUMX つは、既に述べたように、プロジェクトのサポートが終了したことです。もう XNUMX つの主な理由は、作成された開発に基づいて、これらがまだ Python の改善に役立つ可能性があることです。 .

内部で S6 の作業を停止しました。 そのため、このリポジトリはアーカイブされてお​​り、プル リクエストやイシューは受け付けていません。 Python コミュニティ内の会話を刺激し、Python を改善するための将来の作業を刺激するために、以下のデザインの概要をオープン ソース化して提供しました。

S6の操作に関しては、言及する必要があります Python の S6 と JavaScript の V8 エンジンの比較 それが解決するタスクに関して。 このライブラリは、既存の ceval.c バイトコード インタープリター ドライバーを、JIT コンパイルを使用して実行を高速化する独自の実装に置き換えます。

S6 は、現在の関数が既にコンパイルされているかどうかをチェックします そうであれば、コンパイルされたコードを実行し、そうでなければ、CPython インタープリターと同様のバイトコード解釈モードで関数を実行します。 解釈では、実行されたステートメントと、処理中の関数に関連付けられた呼び出しの数がカウントされます。

特定のマイルストーンに到達すると、コードを高速化するためにビルド プロセスが開始されます。 頻繁に実行されます。 コンパイルは strongjit 中間表現に対して実行され、最適化の後、asmjit ライブラリを使用してターゲット システムのマシン命令に変換されます。

負荷の性質にもよりますが、最適な条件下では、S6 は通常の CPython と比較して最大 9,5 倍のテスト実行速度の向上を示しています。

100回繰り返し実行時 リチャーズのテストスイートから、 7倍の加速度があり、 多くの計算を含む Raytrace テストを実行すると、3 倍から 4,5 倍高速になります。

最適化が難しいタスク S6付き C API を使用するプロジェクトです。、NumPyなど、および多数の値の型をチェックする必要性に関連する操作。

単一の関数呼び出しでもパフォーマンスの低下が見られます これは、S6 Python インタープリターの最適化されていない実装を使用するために多くのリソースを消費します (開発はインタープリター モードの最適化の段階に達していません)。

たとえば、配列/タプルの大きなセットをアンパックする Unpack Sequence テストでは、5 回の呼び出しで最大 0,97 倍の速度低下が見られ、循環呼び出しでは CPython から XNUMX が得られます。

最後に それについてもっと知りたい人のために、JIT コンパイラ コードは C++ で記述され、現在は CPython 3.7 に基づいていることを知っておく必要があります。また、ソース コードは Apache 2.0 ライセンスの下で既に公開されており、参考にすることができます。 下のリンクから。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。