2

単一の CPU に限定されず、水平方向にスケーラブルにしたいので、(Amazon の言うように) クラスターに「ブランチ アンド バウンド」を実装することを検討しています。Judith Hippold と Gudula Runger による論文「Task Pool Teams: A Hybrid Programming Environment for Irregular Algorithms on SMP Clusters」があります。これは基本的に、共有メモリの代わりにアドホック ネットワークを除いて、Intel の TBB のようなボトムアップのタスク スティーリング フレームワークです。このライブラリが利用可能であれば、それを使用します (ローカルのスレッド部分を TBB に置き換えます)。残念ながら、私が見つけたどこからでもダウンロードできるようにはなっていないようです。他の実装や類似のライブラリがあるのだろうか?

Microsoft の Task Parallel Library にも同等のものがあるようには見えません。

(「threadpool」の後に (「thread-pool」の前に) 最もよく使用されるバリアントである「taskpool」というタグを作成しようとしましたが、十分なポイントがありませんでした。追加する価値があると思う人はいますか?)

編集:

私はまだ試していませんが、PEBBL (ここでは: software.sandia.gov/trac/acro/wiki/Packages) は非常に高いスケーリングを主張しています。回答者が Wiley の本「Parallel Branch-and-Bound Algorithms」、Crainic、Le Cun、Roucairol、2006 年、El-Ghazali Talbi が編集した「Parallel Combinatorial Optimization」、2006 年から言及している論文は、私が見つけた場所でした。他のライブラリがリストされています。いくつかはより良いかもしれません、私はこれを更新する権利を留保します:)。Google がこれらのライブラリを見つけられなかったのはおかしいです。私の Google が弱かったか、Google 自体が魔法にならないことがあるからです。

4

3 に答える 3

2

「クラスター上」と言うと、分散メモリを意味しているように聞こえますが、少なくともスケーラビリティを保証する方法では、ブランチ アンド バウンドの並列化は分散メモリにとって非常に難しい問題です。このトピックに関する独創的な論文はこちらから入手でき、このトピックに関するワイリーの本からの抜粋はこちらにあります

グローバル タスク キューを実装できるため、Shared memory branch is bound は簡単な問題です。共有メモリとメッセージ パッシングの両方の実装方法の概要については、こちらを参照してください。他に何もないとしても、参照セクションは、アイデアや既存の実装を追求する価値があります。

于 2010-07-09T19:07:30.507 に答える
2

検討すべきことの 1 つは、RabbitMQ のような共有メッセージ キューを調査することです。これは AMQP サーバー (分散アプリケーションが相互にメッセージを送信できるように開発されたメッセージング プロトコル) です。

于 2010-06-30T15:54:57.160 に答える
1

基本的に、ある種の分散同期/キューが必要です

armciを、同期を備えた低レベルの分散メモリインターフェイスとして検討し、その上に構築することをお勧めします。

別の方法は、mpiプロセスをマスターとして割り当てて作業割り当てを分散することです。

http://www.cs.utk.edu/~dongarra/ccgsc2008/talks/Talk10-Lusk.pdf

于 2010-06-29T19:01:09.523 に答える