私はMatlab R2012bをUbuntu 64ビット用に用意しています。私はIntel Core i3 CPU M 330 @ 2.13GHz×4を持っています。MatlabのCore i3とPARFORで4つの作品を並列化する方法
parfor私は同時に4つのループを並列化したいと思っています。インテルCore i3は2つのコアと4つのスレッドを持っているので、私はこのコードを使用します
if matlabpool('size') == 0 % checking to see if my pool is already open
matlabpool(4)
else
matlabpool close
matlabpool(4)
end
をそして私は次のエラーを取得:
エラー:
You requested a minimum of 4 workers, but the cluster "local" has the NumWorkers property set to allow a maximum of 2 workers. To run a communicating job on more workers than this (up to a maximum of 12 for the Local cluster), increase the value of the NumWorkers property for the cluster. The default value of NumWorkers for a Local cluster is the number of cores on the local machine.
なぜ?私のマシンのNumWorkersのデフォルト値は2ですが、私は同時に4つのループを行うことができますが、どのようにすればいいですか?
はい、これは確かに正しいです。 +1 – Jonas
2つの質問:なぜコアよりも労働者の方がパフォーマンスが低下しましたか?ローカルクラスタのNumWorkersのデフォルト値をどのように知ることができますか? –
デフォルト値は物理コアの数です(これは質問で引用したエラーメッセージに記載されています)。コアよりも多くの労働者は、物理的に別々のコア上で動作しない、つまり相互に影響する可能性があるため、パフォーマンスを低下させる可能性があります。 –