2011-01-21 5 views
3

メトリックTSP問題を解決しようとしているプログラムを並列化するためにMPIを使用しています。私はPプロセッサーとN都市を渡す。チャンクのサイズは、MPIを使用するマスターワーカーを使用して最高のパフォーマンスになるでしょうか?

各スレッドはマスタからの作業を要求し、チャンクを受け取ります。これは、チェックする必要のある並べ替えの範囲であり、最小値を計算します。私は悪いルートを前もって剪定することによってこれを最適化しています。

合計(N-1)個あります。計算する経路。各作業者は、確認しなければならない最初のルートと最後のルートを示す番号のチャンクを取得します。さらに、マスターは知られている最新の最良の結果を彼に送ります。したがって、残っている部分の下限を事前に設定しておくと、簡単に悪いルートが発生する可能性があります。

労働者がグローバルよりも良い結果を見つけるたびに、彼はそれを他のすべての労働者とマスターに非同期的に送信します。

私はちょうどどのチャンクサイズが最適かを判断しようとしています。

これまでに見つかった最適なチャンクサイズは(n!)/(n/2)です!しかし、それは良い結果をもたらさない。

ここでどのチャンクサイズが最適か理解してください。計算量と通信量のバランスを取ろうとしています ありがとう

+0

この比率は、マスター/スレーブの場所と実行する必要のある作業量によっても異なります。ユーザーの小さなリクエストで、1秒以内に完了しなければならない場合は、多くのルートを事前に計算しているときに、コミュニケーションを減らすことに重点が置かれます(利用可能な通信時間が多い)。 – orlp

+0

2つのコアを含む同じシステム内のスレッドであり、各コアには4つのスレッドがあります。しかし、私はシステムが私に供給しているスレッド数を事前に知っていません。パフォーマンスの要件は、N <= 18 – RanZilber

答えて

1

これは、MPIの実装、マシンの総負荷などに大きく依存します。どのくらいのワーカープロセスが多いかによって大きく左右されます。そのメモでは、MPIはスレッドではなくプロセスを生成することを理解しています。

結局のところ、ほとんどの最適化の質問でよくあるように、答えは単に「さまざまな設定をテストして、どれが最適かを確認する」ことです。これを手動で行うか、何らかのヒューリスティック(遺伝的アルゴリズムなど)を実装するテスターアプリを作成することができます。

+0

で10分未満で実行することです。確認するチャンクのサイズはどれですか? – RanZilber

+1

チャンクサイズは1から(N-1)まで変化することがあります。/Pであり、N = 18の場合、10^14の大きさである。合理的な時間内に完全にテストすることは不可能な巨大なスペースです。私は6から8までのNとPのさまざまな値から始め、この範囲全体から約100のチャンクサイズをテストし、どれが最良の結果を生み出すかを見ていきます。それから私はNを増やして、おおよそ範囲内のチャンクサイズに焦点を当てるだけで、より低いNのための許容できる結果を作り出しました。私はちょうどその場でこれを思いついたので、良いアイデアかもしれません。 – suszterpatt

関連する問題