質問

したがって、質問は次のとおりです。1.次の問題に対して、mapreduce のオーバーヘッドは高すぎますか?非常に軽いジョブの場合、各マップ/リデュース サイクル (ディスコなど) にどれくらいの時間がかかるか知っている人はいますか?2.この問題に対して、mapreduce に代わるより良い方法はありますか?

マップ リデュースに関して言えば、私のプログラムは 60 のマップ フェーズと 60 のリデュース フェーズで構成されており、これらすべてを合わせて 1 秒で完了する必要があります。この方法で解決する必要がある問題の 1 つは、約 64000 個の変数を使用した最小検索です。検索のヘシアン行列はブロック行列で、対角線に沿ってサイズ 64x64 のブロックが 1000 個あり、右端と下端に 1 行のブロックがあります。の最後のセクション: ブロック行列反転アルゴリズム これがどのように行われるかを示します。シュール補数 S_A および S_D のそれぞれは、1 つの MapReduce ステップで計算できます。逆数の計算にはさらに 1 ステップかかります。

これまでの私の調査によると、mpi4py は良い選択肢のように思えます。各プロセスは計算ステップを実行し、各ステップの後にクライアントにレポートを返すことができ、クライアントはサイクルを継続するための新しい状態変数をレポートに返すことができます。これにより、プロセスの状態が失われず、更新を行っても計算を続行できます。http://mpi4py.scipy.org/docs/usrman/index.html

この Wiki にはいくつかの提案がありますが、最も開発されたソリューションに関する方向性を持っている人はいますか?http://wiki.python.org/moin/ParallelProcessing

ありがとう !

役に立ちましたか?

解決

MPI は、クラスター ノード間でメッセージを渡すことによって並列処理の実装を可能にする通信プロトコルです。MPI で実装される並列処理モデルはプログラマによって異なります。

私は MapReduce の経験はありませんが、これは特定の並列処理モデルであり、実装が簡単になるように設計されているように思えます。この種の抽象化によりプログラミング時間を節約できますが、問題に対する適切な解決策が提供される場合と提供されない場合があります。それはすべて、やろうとしていることの性質によって異なります。

並列処理のコツは、最も適切な解決策が問題固有であることが多く、問題の詳細が分からなければ推奨を行うのが難しいことです。

ジョブを実行している環境と、プログラムがどこに適合するかについて詳しく教えていただけますか フリンの分類法, 、さらに役立つ提案を提供できるかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top