У меня нет большого опыта работы с распараллеливания в MATLAB (< 2 недель сделай сам), еще я получил работу цикла parfor, похожее на это:MATLAB parfor и классификация/использование переменных
N = 11;
var1 = zeros(N, 2);
parfor n=1:N
a = zeros(3, 3);
b = zeros(3, 3);
[a, b] = myfun(<arguments>);
var1(n, :) = [sum(sum(a,1),2) sum(sum(b,1),2);]
end
<portion of non parallelized code that makes use of var1 contents>
Если я понял документацию/примеры до сих пор, «var1» классифицируется как срезанная переменная и «a» и «b» в качестве временных переменных. Я использую «var1» таким образом, потому что мне нужно использовать его содержимое после выполнения цикла parfor.
Я также хотел использовать переменные 'a' и 'b' в качестве срезанных переменных, чтобы избежать повторной инициализации/ненужного перераспределения памяти (?)/Увеличения параллельной производительности.
Я пытался что-то подобное для переменной «A»:
N = 11;
var1 = zeros(N, 2);
**a = zeros(3, 3, N);**
parfor n=1:N
b = zeros(3, 3);
[**a(:,:,n)**, b] = myfun(<arguments>);
var1(n, :) = [sum(sum(**a(:,:,n)** ,1),2) sum(sum(b,1),2);]
end
<another portion of non parallelized code that makes use of var1 contents>
с целью создания рабочих использовать части одного и того же региона в памяти, но я получаю ошибку «переменная а в parfor не может быть классифицированным ".
Итак, почему он не может быть классифицирован и использован как отрезанная переменная, например var1?
спасибо.