Why is my parfor loop not running?

36 Ansichten (letzte 30 Tage)
Marc Laub
Marc Laub am 10 Jun. 2020
Kommentiert: Edric Ellis am 11 Jun. 2020
Hello,
I guess this question has been asked multiple times. I did all the troubleshooting before but I still dont undersatdn why my following parfor loop wont run.
seeds=NaN(volume/4*num_pts,3,volume/4);
parfor i=1:volume/4
pts=partial_seeder(min_grain,num_pts);
ptRads = seeder(pts);
seeds(:,1:2,i)=pts;
seeds(:,3,i)=ptRads;
end
function pts=partial_seeder(min_grain,num_pts)
pts=NaN(num_pts,2);
pts(1,:)=rand(1,2)*2*10^-3;
id=2;
while id<=num_pts
pts_new=rand(1,2)*2*10^-3;
d=pdist2(pts_new,pts(1:id-1,:));
if min(d)>=min_grain
pts(id,:)=pts_new;
id=id+1;
else
continue
end
end
end
I preallocated my array seeds and I dont know why Matlab would be unable to classify my variable seeds. It should just calculate the functions partial_seeder and seeder in parallel and write the results into seeds... not sure why it wont work.
Many Thanks in advance
best regards
  1 Kommentar
Edric Ellis
Edric Ellis am 11 Jun. 2020
As it happens, I already provided the answer to this question before I'd even seen the question - see here https://www.mathworks.com/matlabcentral/answers/545921-how-to-use-fetchnext-correctly . Basically, this is a parfor slicing constraint - you're not allowed two different assignment expressions into seeds - you have to make a temporary variable for each iteration of the parfor loop so that you can make only a single assignment.

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by