Distributing Arrays with parfor

2 次查看(过去 30 天)
Javier
Javier 2011-8-2
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 个评论
Jan
Jan 2011-8-2
Please explain any details. Currently the best answer is: "It depends".

请先登录,再进行评论。

回答(1 个)

Edric Ellis
Edric Ellis 2011-8-2
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 个评论
Konrad Malkowski
Konrad Malkowski 2011-8-3
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 2011-8-3
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

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Parallel for-Loops (parfor) 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by