- 2023-5-9
- 制御・IT系, 技術ニュース, 海外ニュース
- ACM SIGPLAN 2023 International Conference on Compiler Construction, C#, CC 2023: Proceedings of the 32nd ACM SIGPLAN International Conference on Compiler Construction, Codon, GitHub, Python, インタプリタ言語, コンパイラ, トップダウンアプローチ方式, ボトムアップアプローチ, マサチューセッツ工科大学(MIT), 並列バックエンド, 学術, 実行時コンパイラ(JITコンパイラ)
Pythonのコードをより効率的かつ効果的に実行できるようにし、さまざまなニーズや状況に応じたカスタマイズを可能にするコンパイラ「Codon」が開発された。
米マサチューセッツ工科大学(MIT)などによるもので、カナダのモントリオールで2023年2月25〜26日に開催された国際会議「ACM SIGPLAN 2023 International Conference on Compiler Construction」で発表された。その詳細は、2023年2月17日付で『CC 2023: Proceedings of the 32nd ACM SIGPLAN International Conference on Compiler Construction』に掲載されている。
高水準言語のPythonは、構文がシンプルで習得しやすいこともあり、使いやすく人気がある。ただし、Pythonはインタプリタ言語であるため、CやC++のようにコードを最適化して動作を改善するコンパイラが付属している言語とは異なり、一般的に実行速度が非常に遅いといわれている。
これまでにPythonを高速化しようと多大な努力が払われてきたが、通常はトップダウンアプローチ方式であり、標準的なPythonにさまざまな最適化をしたり実行時コンパイラ(JITコンパイラ)を組み込んだりしているのだという。このような方法は、後方互換性の維持には優れているが、実現できる高速化の種類は大幅に制限される。
そこで、研究者らはボトムアップアプローチを採用し、ゼロから構築した新しいシステムにPythonの構文、セマンティクス、ライブラリーを組み込もうと考えた。そうすることで、制約はあるものの自由度ははるかに高くなった。その新しいシステムがCodonだ。
ユーザーはこれまでのようにPythonでコードを書くだけでよく、Codonを使うと、データ型や動作については自動的に処理されるので心配する必要はない。その結果、コードは通常のPythonよりも10倍から100倍速く実行できるようになった。
研究チームが、Pythonで書かれた一般的なゲノミクス・アプリケーションを10個ほど選び、Codonでコンパイルしたところ、手作業で最適化したオリジナルの実装に比べて5~10倍高速に動作した。また、大きなデータセットを扱いPythonを多用する数理ファイナンスのアプリケーションも検討した。
Codonプラットフォームには並列バックエンドがあり、GPUやマルチコア用に明示的にコンパイルできるPythonコードを書くことができる。このようなタスクは、従来は低水準言語のプログラミング知識が必要だった。
CodonはPythonのサブセットのかなりの部分をカバーしているが、まだ実装されていないモジュールもあり、動的機能の中には許可されていないものもある。記事執筆時点で、CodonはGitHubで一般公開されており、Codon普及のために設立されたスタートアップExaloopがメンテナンスしている。Codonはすでに数理ファイナンス、バイオインフォマティクス、ディープラーニングなどの分野で商業的に使用されているという。
関連情報
- Python-based compiler achieves orders-of-magnitude speedups | MIT News | Massachusetts Institute of Technology
- Codon: A Compiler for High-Performance Pythonic Applications and DSLs | Proceedings of the 32nd ACM SIGPLAN International Conference on Compiler Construction
- Welcome to Codon – Codon
- GitHub – exaloop/codon: A high-performance, zero-overhead, extensible Python compiler using LLVM