2012-01-26 13 views
6

私はC#と並列プログラミングのガイダンスを探しています。私はMPI .NETが存在し、OpenMPはサポートされていないことを知っています。 私の質問:OpenMPが提供する機能を実現するライブラリ(TPL?)や機能がありますか? 私はmono(C#.NET 4.0)の最新リリースでうまく作業しています!コードはCray XT6M上で実行されるので、各ボードとノード上のリソースを利用することが重要になります。御時間ありがとうございます!C#HPC - MPIとOpenMP

+0

.NET 4は、並列プログラミングをサポートしています。マイクロソフトのパラレルタスクの扱いが気に入らないのですか? – amrfaissal

+2

そう... 1248コアを持っているときには、単に2つのスレッドを呼び出すだけではそれをカットしません。試してくれてありがとう。 – Volvox

+0

質問の公正さの部分では、OpenMPについて質問していましたが、C#にはいくつかのスレッドオプションがあります。 MPI.NETは2008年後半に放棄されたように見えますが、同様のミドルウェアレベルで他にどのようなオプションが存在するのかよく分かりません。 Seastar +の相互接続のために調整されるものはほとんどありません。 –

答えて

4

C#が実際にファーストクラスの市民であるマイクロソフトの並列プログラミング手法のDryadをご覧ください。明らかにマイクロソフトはBingに使用し、Kinect [2]のボディトラッキングアルゴリズムをトレーニングしています。 OpenMPよりも粗粒度のデータ並列処理を使用します。共有メモリを持つスレッドよりもパイプを使用したプロセスに似ています。

Mono/Linux/Crayシステムで設定するのは恐らくほとんど言わないでしょう。それはC#があなたの典型的なHPC言語ではないと言いました。このスケール/タイプのシステムでC#を効率的に実行するには、通常、非常に難しいでしょう。ソフトウェアを「ファーストクラス」のHPC言語に移植することを評価することをお勧めします。 C、Fortran。

メモ:OpenMPは、完全なCray XT6Mマシン(またはそのようなHPCクラスター)には適用されません。この形式の並列処理(共有メモリー)を使用することができます。ノード間で通信するには、別の形式の並列処理、通常はMPIが必要です。また、ノード内でMPIを使用することもできます。

+0

ありがとう、これは面白そうです。私はハイブリッドMPI/OMPを使ってCでプロジェクトを完成させました。振り返ると、C#はこのような環境で動作する可能性があり、Dryadなどのプロジェクトが進むにつれて利点があるかもしれませんが、HPCプログラムではCやFortranの制御と速度があまりにも重要です。 – Volvox

+0

私は実際にこの質問の時代を実感しませんでした。私はあなたがプロジェクトを強制することができてうれしいです! – Zulan

1

C#は多くのことにとって素晴らしい言語ですが、それだけではそのCrayをフルに活用することはできません。マイクロソフトの開発者は、数十のコア以下のライブラリを最適化し、Xamarinの開発者は携帯電話についてさらに心配しています。 MPIや他の並列プログラミング言語をあなたの下に置いてほしい。あなたはC#や他のいくつかの言語でこれを行うことができます(HPCの世界でもPythonが普及しています)が、キーは正しいライブラリの上に座っています。 TPLは、その並列性の規模でそれを切断しません。