Distributing Arrays with parfor

Hi, I would like to know if it's possible to use Distributing Arrays with parfor loops.
Thanks in advance!
Here the code:
for n=1:1:fbdAct
indice=find(bdAnt(:,columnaID)==bdAct(n,columnaID));
if(~isempty(indice))
if((bdAnt(indice,columnaInc)>0) && (bdAct(n,columnaInc)==0))
if(~isempty(acelerados))
indiceAcel=find(acelerados(:,colAcID)==bdAct(n,columnaID));
if(isempty(indiceAcel))
newAcelerado=[bdAct(n,columnaID) tEspera];
acelerados=vertcat(acelerados,newAcelerado);
end
else
acelerados=[bdAct(n,columnaID) tEspera];
end
bDAcelerados=acelerados;
end
end
end

1 commentaire

Jan
Jan le 2 Août 2011
Please explain any details. Currently the best answer is: "It depends".

Connectez-vous pour commenter.

Réponses (1)

Edric Ellis
Edric Ellis le 2 Août 2011

1 vote

Distributed arrays are designed to be used with SPMD blocks, not PARFOR loops. In general, it is a mistake to use a distributed array within the body of a PARFOR loop. What are you trying to do?

3 commentaires

Javier
Javier le 2 Août 2011
Hi! First of all thanks for replying.
My aim is to parallelize a for loop. I have been traying it with parfor statement, but the issue is that in the for loop I have a matrix(this matrix is defined out the parfor loop) in which it might be added a row or not depend on a coditions, and with parfor loop I'm not able to do it due to the fact I always get a nondeterministic or temporary error , so having found out the distributed array I was wondering if I could use it.
Regards,Javier.
Konrad Malkowski
Konrad Malkowski le 3 Août 2011
Javier,
Could you post a copy of your sequential code (for loop)? This would help in determining if there is a way to parallelize that loop using parfor.
Javier
Javier le 3 Août 2011
It is,bdAnt and bdAct are both matrix of nx8, and acelerados is nx2
for n=1:1:fbdAct
indice=find(bdAnt(:,columnaID)==bdAct(n,columnaID));
if(~isempty(indice))
if((bdAnt(indice,columnaInc)>0) && (bdAct(n,columnaInc)==0))
if(~isempty(acelerados))
indiceAcel=find(acelerados(:,colAcID)==bdAct(n,columnaID));
if(isempty(indiceAcel))
newAcelerado=[bdAct(n,columnaID) tEspera];
acelerados=vertcat(acelerados,newAcelerado);
end
else
acelerados=[bdAct(n,columnaID) tEspera];
end
bDAcelerados=acelerados;
end
end
end
thanks

Connectez-vous pour commenter.

Catégories

Question posée :

le 2 Août 2011

Community Treasure Hunt

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

Start Hunting!

Translated by