2017-01-20 11 views
1

は、私はそこにある、私は異なる初期ポイントで最適化アルゴリズム(はfmincon)の約1,000の別々のランを実行する必要がMatlabの、ではなく厄介尤度関数を最適化しています32個のフリーパラメータのようなもの。並列最適:グラデーションまたはループ

残念ながら、1000回の最適化アルゴリズムであるを同時に並列化することはできません。私は1つを選ぶ必要があります。

外部ループを並列化し、それぞれの最適化を独自のコアで実行するか、または差分差分勾配計算を効率的に行うことができますか?

ありがとうございます!

+1

あなたの状況に該当するかどうかわかりませんが、 'gpuarray'を使用できるかどうかを確認してください。私が知る限り、cudaコアを搭載したNVIDIA GPUを使用している場合にのみ動作しますが、1000コア以上のものを扱うことができます。特定のプログラムをより速くすることを保証するものではありませんが、試してみる価値があります。 – maxb

+0

ありがとう!確かめます。実際に新しいビデオカードのための市場で今。私はこれを念頭に置いておきます。 – hipHopMetropolisHastings

答えて

2

これは、コードやハードウェアについて何も知らなくても正確に答えることは不可能です。

コアが32個を超える場合、それらのいくつかは並列グラジエント計算中に何もしません。この場合、1000個のシミュレーションを並行して実行する方が高速になる可能性があります。

一方で、グラディエントを並列に計算すると、CPUがより効率的にキャッシュを使用できるようになり、キャッシュミスが少なくなります。 Why does the order of the loops affect performance when iterating over a 2D array?またはWhat is “cache-friendly” code?をご覧ください。

+0

ありがとう!私には25のコアがあります。私は最終的にいくつかのテストをする必要があることを知っていますが、私がすでに知っているよりも知識のある人を考えました。私はそれらのリンクをチェックアウトします – hipHopMetropolisHastings

関連する問題