Understanding parfor restrictions with indexing
조회 수: 67 (최근 30일)
이전 댓글 표시
I was attempting to parallelize a for loop in MATLAB with parfor, and came across a strange restriction with regards to indexing. Specifically, the fact that you seemingly cannot use more than one different index into a variable. For example, something like
parfor ii=1:10
A(ii, 1) = 1;
A(ii, 2) = 2;
end
does not work, whereas the code
parfor ii=1:10
A(ii, :) = [1,2]
end
does. Why is this the case? I can make my code accomodate this restriction, but I can't understand why it's necessary. The two different methods seem equivalent to me with respect to being able to cause unintended side effects in parfor.
댓글 수: 0
채택된 답변
Edric Ellis
2019년 6월 18일
편집: Edric Ellis
2019년 6월 18일
The indexing restrictions in parfor range from those which are required to make the loop iterations provably order-independent (well... modulo non-standard implementations of subsref or subsasgn), to those which are limitations of the implementation. In this case, you have two indexing expressions either of which on its own would constitute a valid "slicing" operation, but the current implementation cannot support that.
Also note that the following is allowed:
parfor ii=1:10
for jj = 1:2
A(ii, jj) = jj;
end
end
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Parallel for-Loops (parfor)에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!