How to resolve warning message about broadcast variable while using 'parfor'?
Show older comments
males = {'animal1', 'animal2', 'animal3'};
treatmentGrps = {'T1', 'T2', 'T3'};
nrows = size(featureLists, 1);
ncols = size(featureLists, 2);
featureLists = cell(nrows, ncols);
parfor grp = 1:nrows
tempRow = cell(1, ncols);
for animal = 1:ncols
tempRow{animal} = individualPsychValuesPerSession('approachavoid', ...
treatmentGrps{grp}, males{animal});
end
featureLists(grp, :) = tempRow;
end
When I use 'parfor' like above I get an warning message
The entire array or structure 'males' is a broadcast variable.
This might result in unnecessary communication overhead.
But, when I change 'ncols' to 'numel(males)' like following
for animal = 1:numel(males)
tempRow{animal} = individualPsychValuesPerSession('approachavoid', ...
treatmentGrps{grp}, males{animal});
end
for the inner loop I don't get any warning.
Can someone please explain this behavior of 'parfor'?
Accepted Answer
More Answers (1)
Drew
on 14 Jul 2024
Edited: Walter Roberson
on 14 Jul 2024
0 votes
See https://www.mathworks.com/help/parallel-computing/broadcast-variable.html It includes an example with numel().
If this answer helps you, please remember to accept the answer
2 Comments
Atanu
on 14 Jul 2024
Walter Roberson
on 14 Jul 2024
It was due to the ending period being interpreted as part of the URL. I have corrected the link.
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!