分散コンピューティングシステムの実装に役立つフレームワーク/ライブラリがあるかどうかを調べています。分散コンピューティングのためのC/C++フレームワーク(MPI?)
大量のデータを数百メガバイトのファイルに分割したマスターがあります。ファイルは〜1MBの断片にチャンクされ、処理のために作業者に配布されます。一度初期化されると、各作業者の処理は前のチャンクから取得した状態情報に依存するため、作業者はプロセス全体を通じて生き続ける必要があり、マスタは適切なチャンクを適切な作業者に送信できる必要があります。注意すべき点の1つは、このシステムがより大きな処理チェーンの一部に過ぎないことです。
私はMPI(特にOpen MPI)を調べましたが、それが適切かどうかはわかりません。小さなメッセージ(数バイト)を送信するようになっているようですが、大きなファイル(最大1/5 MB)でスループットが増加することを示すグラフがいくつか見つかりました。
私は、常にメッセージで前後に送られない限り、状態を維持する方法がないかもしれないと心配しています。いくつかのMPIの例の構造を見ると、それはマスター(ランク0)のように見え、ワーカー(ランク1-n)は同じ部分の一部であり、その行動は条件によって決定された。労働者が生きていて(状態を維持して)、もっと多くのメッセージが届くのを待つことができますか?
私はこれを書いているので、これはうまくいくと思っています。ランク1 ... nセクションは、ブロッキング受信とそれに続く処理コードのループにすぎません。状態は、「それ以上のデータ」メッセージが受信されて結果を返信するまで、そのループ内で維持される。私はここでMPIの構造を把握し始めているかもしれません...
私の他の質問は、実際にコードを実行する方法です。このシステムは大規模なシステムの一部であるため、他のコードから呼び出す必要があります。私が見た例では、mpirunを使用しています。mpirunでは、プロセッサ数やホストファイルの指定方法を指定できます。他のコードから自分のMPI関数を呼び出すことで、同じ動作をさせることはできますか?
私の質問はMPIの正しいフレームワークですか?このタスクに適したものがありますか?これを最初からやっていますか?
あなたは、CまたはC++でいますか? – Puppy