parfor question

2 views (last 30 days)
Alessandro Masullo
Alessandro Masullo on 13 Jan 2012
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?

Accepted Answer

Edric Ellis
Edric Ellis on 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.

More Answers (0)

Categories

Find more on Parallel for-Loops (parfor) in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!