26

Google は、Python の速度を 5 倍にするオープン ソース プロジェクトを後援しています。

Unladen-Swallow良いプロジェクト計画を立てているようです

並行性はなぜそれほど難しい問題なのでしょうか?
LLVM は並行性の問題を解決しますか?
ハードウェアの進歩のためのマルチコア以外のソリューションはありますか?

4

3 に答える 3

31

LLVMは複数のものを組み合わせたものです。一種の仮想マシン/最適化コンパイラであり、特定の言語で入力を受け取り、結果を中間言語で出力するさまざまなフロントエンドと組み合わされています。この中間出力は、仮想マシンで実行するか、スタンドアロンの実行可能ファイルを生成するために使用できます。

同時実行の問題は、科学計算では長い間使用されていましたが、最近では消費者向けアプリで一般的になってきていることです。したがって、科学計算プログラムをプログラミングして優れたパフォーマンスを達成する方法は広く知られていますが、同時実行性に優れたメール ユーザー エージェント/ワード プロセッサを作成することはまったく別のことです。また、現在の OS のほとんどはシングル プロセッサを念頭に置いて設計されており、マルチコア プロセッサに完全に対応していない可能性があります。

並行性に関する LLVM の利点は、中間出力があることです。将来、並行性が進歩した場合、インタープリターを更新することで、LLVM でコンパイルされたすべてのプログラムでそれらの利点を即座に得ることができます。スタンドアロンの実行可能ファイルにコンパイルした場合、これはそれほど簡単ではありません。したがって、LLVM は同時実行性の問題を解決するわけではありませんが、将来の機能強化への扉を開いています。

確かに、量子コンピューターや遺伝学コンピューターなどのハードウェアには、さらに多くの進歩の可能性があります。しかし、それらが現実になるまで待つ必要があります。

于 2009-03-29T21:37:41.110 に答える
17

LLVM への切り替え自体は、同時実行性の問題を解決していません。Global Interpreter Lockを取り除くことで、それは個別に解決されています。

それについてどう思うかわかりません。私はスレッドを主にブロッキング I/O に対処するために使用し、マルチコア プロセッサを利用するためではありません (そのために、multiprocessingモジュールを使用して個別のプロセスを生成します)。

だから私はGILが好きです。トリッキーな同期の問題について考える必要がないので、私の人生はずっと楽になります。

于 2009-03-29T21:39:59.547 に答える
15

LLVMはコード生成の核心を処理するので、より一般的で、移植性があり、保守しやすい方法でPsycoを書き直すことができます。これにより、CPythonコアを書き直すことができ、Pythonの並行性のサポートを改善するために必要な代替GCやその他のことを試すことができます。

言い換えれば、LLVMは並行性の問題を解決せず、手を解放するだけで解決できます。

于 2009-03-29T22:07:58.340 に答える