Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

Help: restructuring parfor

조회 수: 1 (최근 30일)
Pramit Biswas
Pramit Biswas 2018년 4월 6일
마감: MATLAB Answer Bot 2021년 8월 20일
totpV=5;
vars = rand(totpV,2);
for loop1=1:100
for loop2=1:totpV % Make this loop2 parallel using parfor
parameter=vars(loop2,:,loop1);
result(loop2,loop1)=feval('sum',parameter); % sample function
if min(result(loop2,:))<=result(loop2,loop1)
best=result(loop2,loop1);
end
vars(loop2,:,(loop1+1))= vars(loop2,:,loop1) + rand(1,2).*best;
end
end
I want to process loop2 parallelly, however, not getting how. From This page, probably this is due to Sliced Variables. Any idea to restructure?
Errors: The PARFOR loop cannot run due to the way variable 'vars', 'result' is used.
  댓글 수: 1
Adam
Adam 2018년 4월 6일
What are the warnings you get when you try?

답변 (1개)

Bhavanithya Thiraviaraja
Bhavanithya Thiraviaraja 2018년 4월 17일
편집: Bhavanithya Thiraviaraja 2018년 4월 17일

There seems to be a dependency between the iterations in the line

min(result(loop2,:))<=result(loop2,loop1)

In parfor, the iterations are performed on independent MATLAB workers and hence it requires 'No Dependency'. In this case, the min(result(loop2,:)) seems to use the previously calculated values also, hence making it dependent.

Refer https://de.mathworks.com/help/distcomp/ensure-that-parfor-loop-iterations-are-independent.html for examples!

The dependency has to be broken without affecting the algorithm to use parfor.

이 질문은 마감되었습니다.

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by