Why is my parfor loop not running?

36 visualizaciones (últimos 30 días)
Marc Laub
Marc Laub el 10 de Jun. de 2020
Comentada: Edric Ellis el 11 de Jun. de 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 comentario
Edric Ellis
Edric Ellis el 11 de Jun. de 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.

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by