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 件のコメント

Jan
Jan 2011 年 8 月 2 日
Please explain any details. Currently the best answer is: "It depends".

サインインしてコメントする。

回答 (1 件)

Edric Ellis
Edric Ellis 2011 年 8 月 2 日

1 投票

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 件のコメント

Javier
Javier 2011 年 8 月 2 日
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 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

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeParallel for-Loops (parfor) についてさらに検索

質問済み:

2011 年 8 月 2 日

Community Treasure Hunt

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

Start Hunting!

Translated by