Clear Filters
Clear Filters

Nested for-Loops in parfor

3 views (last 30 days)
LD
LD on 22 Mar 2022
Commented: LD on 10 Apr 2022
I try to put a for-loop in a parfor-loop. However, the following code is invalid.
parfor i=1:10
for j=1:10
a(j)=1;
end
end
The only way I know to fix that is
parfor i=1:10
for j=1:10
a(i,j)=1;
end
end
But I think it is inefficient when the size of "a" is large (I don't need "a" at the end of this program) . Is there a better way to implement this nested for-loop?
  1 Comment
Edric Ellis
Edric Ellis on 23 Mar 2022
@Walter Roberson has provided you with a way to fix the problem. Just to explain the problem a little bit more - parfor insists on being able to prove that the iterations of your parfor loop are not (trying to be) order-dependent. In your original code, it appears as though the value of a as assigned when i==1 is still available on the next iteration when i==2. Walter's fix assigns a value to the whole of a, and this makes parfor satisfied that you cannot possibly access the old values of a in subsequent iterations.

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 22 Mar 2022
parfor i=1:10
a = zeros(10, 1);
for j=1:10
a(j)=1;
end
end

More Answers (0)

Categories

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

Tags

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!