2016-07-29 11 views
-2

のコードを書いています。私は並列計算ツールを使用しました。 私のコードについて詳しくは: matlabとparallelで並列遺伝的アルゴリズムを実装しようとしています。コンピューティングツールボックスparforの並列コードは、

私はそれを実装しましたが、問題があります。それはparforとの私の並列コードです。

私のコード:

tic 

for j=1:maxIteration 
    parfor i=1:numIslands 
     if migrationInterval 
      doMigration; 
     end 
     doCrossover; 
     doMutation; 
     newSpring; 
    end 
end 
toc 

numIslands少数(5〜12) maxiterationは常に大きな数(5000から1500) で常に は、私はあなたがすることをお勧めしますあなた

+0

私のPCは2つのコアを持つCPUを持っています – monir

+1

['gcp'](http://www.mathworks.com/help/distcomp/gcp.html)'( 'nocreate')を実行するとどうなりますか? NumWorkers'?あなたのループの前に['parpool'](http://www.mathworks.com/help/distcomp/parpool.html)'(2);を追加するとタイミングの結果は変わりますか? –

+1

プールの設定方法の詳細をお知らせください。 'migrationInterval'とは何ですか?それが真実か偽であるかを決めるのは何ですか? – Matt

答えて

0

に感謝し、私を助けてください"Run and Time"ツールを使用して関数を実行します。その理由がパラフォル・プロシージャーまたは自分の関数内にある場合、結果が表示されます。 parforプロシージャは不要であり、利点はありませんが、常に実行する関数に依存します。

+0

あなたの答えに感謝します。 「Run and Time」ツールを使用するためのリファレンスを私に教えてください。 MATLAB R2012aにはこのツールがありますか? – monir

+0

http://mathworks.com/help/matlab/matlab_prog/profiling-for-improving-performance.html - ここでは、プロファイラ(または実行時)ツールの使い方を説明します。 – Valentin

0

CPUには2つのコアがあります。 1つの問題はコードそのものであり、関数の代わりにスクリプトを呼び出すように見えるので、不必要に作業領域にあふれている可能性があります。さらに、それらのスクリプトのいずれかがその場で変数を宣言している場合は、RAMを詰まらせることがあります(Matlabは特に優れています)ので、コード実行が遅くなります。

各スクリプトを最初に最適化してください。

スクリプトの代わりに関数を使用することをお勧めします。

関連する問題