parfor question
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello. I'm working with a very long for-cycle (50x200x200 matrix) and I'd like to use parfor to reduce calculating time. I'm working on a 8 cores pc. Since what I know, the parfor works only if the statements does not depend ones by each other. This is an example of my problem:
a = zeros(3,3);
w = magic(3);
% This works!
parfor i = 1:3
a(1, i) = w(i, i);
end
% Won't work!
parfor i = 1:3
a(i, i) = w(i, i);
end
Why the second one does not work?
0 Kommentare
Akzeptierte Antwort
Edric Ellis
am 13 Jan. 2012
In the second loop, "a" is not sliced. This help text page describes the restrictions on sliced variables inside PARFOR - but basically the indexing expression for "a" must consist of 1 instance of the loop variable "i", and the remaining subscripts must be constants.
Also note that in the second example, "w" will be broadcast because it cannot be sliced - this means that the whole value of "w" will be sent to each worker; this can be inefficient.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Parallel for-Loops (parfor) finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!