Parallel Pool; variable does not exist after running
조회 수: 7 (최근 30일)
이전 댓글 표시
Hello,
When I run the following simple script there is no problem and I'll get i and e at the end of the loop
for i=1:30
e=i/2
end
However, when I want to use parallel pool for the same loop, but with parfor:
parfor i=1:30
e=i/2
end
I don't get any thing when running the loop finishes. Am I missing something here?
댓글 수: 0
답변 (1개)
Raymond Norris
2020년 8월 13일
Hi Parsa,
A for loop runs in a serial fashion, one iteration after the other, with the same reproducable results each time (more or less). In your example, we know e will always equal 15. A parfor loop runs its iterations in any order. Therefore, the last value of i could be 14 (and not 30) and therefore, e would equal 7 (and not 15). For this reason, after a parfor, i and e are not know (more about this in a second).
MATLAB must clasify each of the variables within the body of a parfor. You can read more about classification here
Based on this classification, we deem i to be a loop variable and e to be a temporary variables, nether of which persist after the completion of a parfor. Sliced output and reduction variables can be assigned and persist after a parfor.
Raymond
댓글 수: 3
Raymond Norris
2020년 8월 13일
I make brief mention at the end about sliced output and reduction variables. In the OP's example, e is neither of them, though I suspect it's a toy example and not the actual code.
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!