parfor question
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Edric Ellis
le 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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Parallel for-Loops (parfor) dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!