高性能計算のために.net 4.0 Task Parallel LibraryはMPI.NETを置き換えますか?
MPI.NETはここにありますhttp://www.osl.iu.edu/research/mpi.net/svn/Microsoftの.NET環境用のMessage Passing Interface(MPI)の高性能で使いやすい実装です。 MPIは、計算クラスタなどの分散メモリシステム上で実行される並列プログラムを作成するための事実上の標準です。
.NET 4 TPLは、次のように述べています。「タスク並列ライブラリ(TPL)は、.NET Frameworkバージョン4のSystem.ThreadingおよびSystem.Threading.Tasks名前空間に含まれる一連のパブリックタイプとAPIです。TPLの目的は、次のとおりです。アプリケーションに並列処理と並行処理を追加するプロセスを単純化することで開発者の生産性を向上TPLは並行処理の程度を動的に調整して、使用可能なすべてのプロセッサを最も効率的に使用します。 TPLを使用することで、プログラムが達成するように設計されている作業に集中しながら、コードのパフォーマンスを最大化することができます。」
私の目標は、Windows HPC 2008で実行できるアプリケーションを構築することです。...どの道を行く?
メッセージの受け渡しは、並列プログラミングの考え方に対処するための別の方法です。 AxumとErlangはどちらもメッセージパッシングを使います。それらは両方とも2つの特定の実装を扱っているので、それらは実際に直接比較することはできません。
私がメッセージパッシングで見た利点は、ネットワーク/プロセスの境界を透過的にすることができ、メッセージパッシング自体が基礎となるスレッドに依存しないことです(すべてのメッセージとアクターが1つのスレッドになることができます)。
TPLは、私の限られた理解から、.NETの現在のスレッドモデルの上に構築/置換/大幅に改善するためにあります。つまり、あなたが制御する実際のスレッドを持ち、引数を転送するか共有状態を使用して通信します。
それがゼロから、そしてデザインがコードの非常に小さなセグメントに分割されるのに適しているなら、私はMPI.NETを提案するでしょう。仕事の種類がCPUに負荷がかかる場合(数学的仕事のように)、私はTPLルートを提案するでしょう。
編集する長い間編集して、この答えは古くなっています! MPI.NETは、HPCノードの通信境界を透過的かつ構成可能にするため、HPCに直接適しています。 MPI.NETはエンドポイントにメッセージを送信します - これらのポイントは設定ファイルでIP /ポートアドレスとして定義されています。このコードは、エンドポイントがネットワークの境界を越えることを知りません。
HPCでTPLを選択した場合(サポートされているかどうかわからない場合)、コードはノードと、処理を別のノードに転送する方法を認識しなければならないため、メリットはありません。
私が理解していることから、MPI.NETはサポートしていますが、TPLは分散コンピューティングをサポートしていません。