2011-01-15 8 views
0

私はモンテカルロ型シミュレーションを実行するプログラムを持っています。現在、私はOpenMPとOpenCLの両方に対してプログラムのバージョンを書いており、私のLAN上のコンピュータ間でワークロードを配布するための最良の方法を知りたいと考えています。技術小規模分散コンピューティング

最初のアイデアはソケットベースのクライアント/サーバーアプリケーションを書くことでした。それによって、サーバーはワークユニットを分割してクライアントに送信し、クライアントに送信して結果を返信しました。高速CPUとGPUを搭載したシステムを活用するために、システム上でクライアントプログラムの複数のインスタンスを実行することができました(-ompと-ocl実行可能ファイル)。

しかし、ソケットプログラミングはめったに楽しいものではなく、正しい(プロトコルなどを決定する)苦労があります。したがって、私はMPIを見てみることにしました。これは、CPU + GPUをミックスに含めるか、サーバで規定された「ワークユニット」がどの程度うまく収まるかを確かめています。問題の空間をサンプリングする領域は重要ではないため、知覚的なマスタープロセスによって物事を調整する必要があります)。

したがって、私に利用可能な他のオプションがあるかどうか、同様の状況でオンになります。

+0

mpiはデファクトスタンダードである。 – Anycorn

答えて

1

あなたの説明は少し曖昧ですが、確かにMPIでうまくいくと思います。 MPIは、MPI呼び出しとは別のコードを実行していることをMPIが認識していないので、GPUを追加する必要はありません(私はかつて、可視化とスレッド化のためにQtを使用したMPIアプリケーションを作成しました)。

私が見ることができる最大の注意点は、MPIプログラムが1つのプログラムの複数のインスタンスで構成されていることです。OpenMPとOpenCLソリューションが別々のアプリケーションである場合、両方を生成して、ただし、OpenMPソリューションではスレッドを生成し、OpenCLソリューションでは別のスレッドを生成する単純なラッパーアプリケーションを作成できます。このラッパーアプリをMPIで実行すると、望ましい結果が得られますが、もちろん通信は少し難しいかもしれません(スレッド間のコミュニケータ情報の共有など)。

+1

MPIとのコミュニケータ内でさまざまなプログラムを起動することに問題はありません。 OpenMPIについては、http://www.open-mpi.org/faq/?category=running#mpmd-runを参照してください。 MPICH2の構文も同様です。 MPIは実際に分散コンピューティングではなく、クラスタ内の信頼性の高いネットワーク向けに設計されていると付け加えます。いずれかのコンピュータの電源が切れていたり、ネットワークの障害が発生しても、それはうまく反応しません。それ以外は、動作するはずです.MPIを使用したこの種の「ハイブリッド」アプローチは、HPCでかなり頻繁に使用されます。 –

+0

あなたを指摘して、私はこれを知らなかった。好奇心の念から、これはすべてのMPI実装に必要な標準機能ですか? – suszterpatt

関連する問題