ホームページ > 記事 > テクノロジー周辺機器 > このコンパイラーは、Python を C++ と同じくらい高速にできます。最大 100 倍高速になります。MIT によって作成されました。
ディープ ラーニングの台頭以来、Python は最も注目されているプログラミング言語の 1 つであり、データ サイエンスと機械学習の分野を支配しており、科学と数学の分野でも主役の役割を果たしています。計算中です。現在では、想像できるほぼすべてのプロジェクトに対応する Python パッケージを見つけることができます。
ただし、高水準言語の構文が簡略化されているため、学習と使用は簡単ですが、C や C などの低水準言語よりも遅くなります。
MIT コンピューター科学人工知能研究所 (CSAIL) の研究者らは、ユーザーが C や人工知能と同じくらい効率的に実行できる Python コードを作成できる Python ベースのコンパイラーである Codon でこの状況を変えたいと考えています。 C プログラムはカスタマイズ可能であり、さまざまなニーズや環境に適応できます。
この研究の最新論文「Codon: A Compiler for High-Performance Pythonic Applications and DSLs」は、2 月の第 32 回 ACM SIGPLAN International Conference on Compiler Construction で発表されました。
開発作業では、人々は次のことを行う必要があります。コンパイラーを使用して、ソース コードをコンピューター プロセッサーで実行できるマシン コードに変換します。Codon は、開発者が他の言語のパフォーマンス上の利点を活かしながら、Python で新しいドメイン固有言語 (DSL) を作成するのに役立ちます。
「通常の Python は、いわゆるバイトコードにコンパイルされ、仮想マシンで実行されるため、処理速度が大幅に遅くなります」と、論文の筆頭著者であるコドン氏は述べています。 , 「Codon ではネイティブにコンパイルするため、中間の仮想マシンやインタープリターを経由せずに、最終結果を CPU 上で直接実行できます。」
#Codon のコンパイル パイプラインには型チェックが含まれており、Python コードをより効率的に実行できます。
Python ベースのコンパイラには、Linux および macOS 用のビルド済みバイナリが付属しており、ソースから実行可能ファイルをビルドまたは生成することもできます。 「Codon を使用すると、Python のようなソース コードを配布したり、バイナリにコンパイルしたりできます」と Shajii 氏は言います。 「バイナリを配布したい場合は、Linux バイナリや Mac バイナリなどの C 言語と同じになります。」Codon を高速化するには、People を調べてください。コンパイル時に型チェックを実行することにしました。型チェックには、データ型 (整数、文字列、文字、浮動小数点など) を値に割り当てることが含まれます。たとえば、数値 5 を整数として、文字 c を文字として、単語 hello を文字列として、10 進数 3.14 を浮動小数点数として割り当てることができます。
「通常の Python では、すべての型がランタイムに与えられます」と Shajii 氏は言いました。 「Codon を使用すると、コンパイル中に型チェックが行われるため、実行時に高価な型操作をすべて回避できます。」
MIT CSAIL の主任研究員である Saman Amarasinghe 氏は、次のように付け加えました。動的言語 (Python など) を使用すると、データを取得するたびに、ランタイムのタイプを決定するために、その周囲に多くの追加のメタデータを保持する必要があります。Codon はこのメタデータを排除するため、コードが高速になります。
Shajii 氏によると、Codon には実行時に不要なデータや型チェックがないため、オーバーヘッドはゼロです。パフォーマンスの点では、「Codon は一般に C と同等です。通常、Python と比較して 10 倍から 100 倍の速度向上が見られます。」
一方、Codon のアプローチにはトレードオフもあります。 -オフ。 「私たちはこの静的な型チェックを行っており、実行時に型を動的に変更するなど、Python の動的機能の一部の使用を許可していません」と Shajii 氏は述べています。
「まだ実装していない Python ライブラリがいくつかあります。」アマラシンハ氏はさらに、「Python は数え切れないほどの人によって実際にテストされていますが、Codon はまだそのレベルに達していません。さらに多くのプログラムを実行する必要があります。」 「より多くのフィードバックとより多くの強化を得るために。通常の Python の安定したレベルに達するには、しばらく時間がかかります。」 Codon は、もともとゲノミクスとバイオインフォマティクスの研究のために設計されました。研究者らは、Python で書かれた約 10 の一般的なゲノミクス アプリケーションを試し、Codon を使用してコンパイルしたところ、元の手動で最適化された実装と比較して 5 ~ 10 倍の高速化を達成しました。 「これらの分野のデータセットは現在非常に大規模になっており、Python や R などの高級言語ではシーケンス セットあたり数テラバイトのデータを処理するには遅すぎます」と Shajii 氏言った。 「これが私たちが埋めたいギャップです。コンピューター サイエンスやプロの開発者ではない分野の専門家を支援するために、C や C コードを書かなくてもビッグ データを処理する方法を構築することで、このギャップを埋めたいのです。」 上のグラフは、Python (CPython 3)、PyPy、Codon、および C のパフォーマンスをいくつかのベンチマークで比較しています。 y 軸は、CPython 実装と比較した Codon 実装の高速化を示します。 MIT/EXALOOP/UNIVERSITY OF VICTORIA/ACM ゲノミクスに加えて、Codon は、Python だけでなく、大規模なデータセットを処理する同様のアプリケーションにも適用できます。 -ベースのコンパイル プロセッサによってサポートされる GPU プログラミングと並列プログラミング。実際、Codon は現在、Codon を学術プロジェクトから産業アプリケーションに変えるために Shajii が設立したスタートアップ Exaloop を通じて、バイオインフォマティクス、ディープラーニング、定量的金融で商業的に使用されています。 Codon がさまざまな分野に適応できるようにするために、チームはプラグイン システムを開発しました。 「拡張可能なコンパイラのようなものです」とシャジイ氏は言う。 「ゲノミクスやその他の分野向けのプラグインを作成でき、これらのプラグインには新しいライブラリや新しいコンパイラ最適化を含めることができます。」 さらに、企業や機関は Codon を使用してプロトタイプを作成できます。そして独自のアプリケーションを開発してください。 「私たちが目にするパターンの 1 つは、Python は使いやすいため、プロトタイピングやテストには Python を使用しますが、重要なことになると、アプリケーションを書き直すか、他の人に C または C で書き直してテストしてもらう必要があるというものです。より大きなデータセットです」とシャジイ氏は語った。 「Codon を使用すると、Python を完全に使用して、両方の長所を活用できます。」 Codon の将来に関して、Shajii と彼のチームは現在、広く使用されている Python のネイティブ バージョンの開発に取り組んでいます。 Python ライブラリの実装、およびこれらのライブラリからより良いパフォーマンスを得るのに役立つライブラリ固有の最適化。彼らはまた、Web ブラウザ上でのコードの実行をサポートする人気の機能である Codon の WebAssembly バックエンドを作成することも計画しています。
以上がこのコンパイラーは、Python を C++ と同じくらい高速にできます。最大 100 倍高速になります。MIT によって作成されました。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。