MATLAB: Can I avoid this broadcast variable

parallel computingParallel Computing Toolboxparfor

Hello,
I had two nested for loops that I would like to parallelise. It looked like this
for k = 1:size(S,2)
for j = 1:length(b)
fun(S(:,k),b(j));
end
end
Here S is large (10^5 x 10^2), and b is not large (1 x 10).
Since all of the loops are independent I found the following solution
parfor i = 1:size(S,2)*length(b)
k = ceil(i/length(b)); %S
j = i-(k-1)*length(b); %b
fun(S(:,k),b(j));
end
The problem is that S and b are broadcast variables.
Is there a way to eliminate S as a broadcast variable (b does not matter much)?
Thank you!

Best Answer

Why not this?
parfor k = 1:size(S,2)
tmp=S(:,k);
for j = 1:length(b)
fun(tmp,b(j));
end
end
Related Question