2009-08-19 9 views
11

"並行性"とは、Erlangのアクターやそのようなプロセスをスムーズに動作させるための並列GCのような軽量プロセスを意味します。INRIAは同時実行プリミティブをOCamlに追加しますか?

INRIAが現在のOCaml実装の欠点を取り除き、OCamlをマルチコアの将来のためにさらに準備することは非常にクールです。

P.S. F#は私が探しているものではありません。

答えて

9

no

私は彼の説明を再現することなく、より簡潔にすることはできません。それはそれ自体のために話す。はい、これは2002年ですが、私は彼がこの問題に揺らぐのを聞いていないし、テキストから、彼はこれらの目標から後退する可能性は全くないと思われます。

並行機能プログラミングの最新の開発では、おそらくMPIソリューション(with ocaml bindings)が問題の解決策になるかもしれません。明らかに、これは共有メモリ並列性ではありません。 concurrent MLもあります。あるJ&oCaml、あり

+1

私は今すぐアーカイブを掘り起こす準備はできていませんが、同様の感情が表現されている最近のスレッドがあると確信しています。 INRIAは、OCaml言語をそのままサポートしていますが、LWPや並行実行時のような大きな新機能を引き続き進めているわけではありません。その部分的にジョン・ハロープのHLVMのポイントではありませんか? –

+0

ocaml4multicoreが利用できます(制限付き)。http://www.algo-progを参照してください。info/ocmc/web/ – nlucaroni

+1

注目すべき点:2002年にM. Leroyが講義をOCamlリストに送ったのは、SMPマシンが今日のように一般的ではなかったというケースでした。それでも、OCamlランタイムに共有メモリ並列処理を追加することは、SMPシステムの最適化のためのより伝統的なアプローチ、つまりfork/execとプロセス間通信で勝っているかどうかはまだ分かりません。 INRIAは、その集合的な心が変わったという発表はまだしていないようです。 –

2

は...

Objective Camlプラス(&)join calculus

、それは、OCamlのは、並行して分散プログラミングのために拡張されます。

+3

しかし、JoCamlを使用しても、複数のコアを使用する場合は、明示的にforkを呼び出す必要があります。 – aneccodeal

0

Thread module並行処理プリミティブを提供する並行GCを追加するためのプロジェクトに資金を提供しているようです、そしてaroされているそして、しばらくの間。より高いレベル/異なる並行性APIを提供するthirdパーティーlibrariesもあります。

しかし、あなたはconflating concurrency and parallelismのように聞こえます。

もちろん、OCamlは並列化の方法ではありません。 OCamlは、同時に何千ものマシンで実行できます。大規模並列スーパーコンピュータのプログラミングを容易にするためにMPI bindingsさえあります。しかし、現在のリファレンスOCamlの実装では、あなたが本当に関心があると思う並行プログラムを自動的に並列化することはありません。

Multicore OCaml SMPコンピュータが共有メモリの並列処理をサポートします過去数十年にわたって非常に流行しており、それらをより簡単に最適化することは本当にうれしいでしょう。彼らはゆっくりとした着実な進歩を見せており、それを正しくしようとしているようです。