필터 지우기
필터 지우기

How to use a matrix in parfor?

조회 수: 12 (최근 30일)
Lukas Kozubik
Lukas Kozubik 2018년 3월 21일
댓글: Rik 2022년 11월 15일
Hello,
I have troubles with using parfor. I have program similar to this (heat transfer):
A=rand(20,20,2);
d=rand(20);
parfor i=2:19
for j=2:19
A(i,j,2)=d(i)*A(i+1,j,1)+d(i+1)*A(i-1,j,1)+d(i-1)*A(i,j+1,1)+A(i,j-1,1);
end
end
There is always error like: The PARFOR loop cannot run due to the way variable 'A' is used .
tank you very much Lukas
  댓글 수: 3
ahmad eldeeb
ahmad eldeeb 2021년 11월 6일
What if I want to calculate A_new=A_old+v?
Matt J
Matt J 2021년 11월 7일
편집: Matt J 2021년 11월 7일
I'm skeptical that parfor is going to make things faster here. Try the following simpler test. The times shown are what I get with a 12 worker default local profile.
N=2000;
A=rand(N,N);
d=rand(N,1);
B=A(:,:,1);
C=B;
tic
for j=2:N-1
for i=2:N-1
C(i,j)=d(i)*B(i,j-1);
end
end
toc %Elapsed time is 0.014457 seconds.
tic
parfor j=2:N-1
for i=2:1999
C(i,j)=d(i)*B(i,j-1);
end
end
toc %Elapsed time is 1.889115 seconds.

댓글을 달려면 로그인하십시오.

답변 (1개)

Namnendra
Namnendra 2022년 6월 19일
The different iterations in a parfor loop work independently. So, if "i" is the iterating variable in a parfor loop, you can't use A[i]=A[i+1], because the order of different iterations of loop can vary. You can call a function instead to perform the necessary operation.
  댓글 수: 1
Rik
Rik 2022년 11월 15일
Comment posted as flag by @ahmad eldeeb:
Could you give example?

댓글을 달려면 로그인하십시오.

카테고리

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