Mam Matlab R2012b dla 64 bitów Ubuntu. Mam procesor Intel Core i3 M 330 @ 2.13 GHz × 4.Równoległe 4 działa z PARFOR z Core i3 w Matlab
Chcę użyć parfor, aby równolegle 4 pętle w tym samym czasie. Ponieważ Intel Core i3 ma 2 rdzenie i 4 wątki używam tego kodu:
if matlabpool('size') == 0 % checking to see if my pool is already open
matlabpool(4)
else
matlabpool close
matlabpool(4)
end
I uzyskać następujący błąd:
Błąd:
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.
Dlaczego? Domyślna wartość NumWorkers w moim komputerze to 2, ale jeśli mogę zrobić 4 pętle w tym samym czasie, w jaki sposób mogę je uzyskać?
Tak, to jest rzeczywiście poprawna. +1 – Jonas
Dwa pytania: dlaczego więcej pracowników niż rdzeni obniżyło wydajność? Jak mogę poznać domyślną wartość NumWorkers dla klastra lokalnego? –
Domyślną wartością jest liczba rdzeni fizycznych (jest to nawet podane w komunikacie o błędzie podanym w pytaniu). Więcej pracowników niż rdzeni * może * obniżyć wydajność, ponieważ nie działają one na fizycznie oddzielonych rdzeniach, tzn. Mogą wpływać na siebie nawzajem. –