У меня есть такой код, который я хочу запустить с помощью parpool: result = zeros (J, K)
for k = 1:K
for j = 1:J
build(:,1) = old1(:,j,k)
build(:,2) = old2(:,j,k)
result(j,k) = call_function(build); %Takes a long time to run
end
end
Требуется много времени для запуска этого кода, и мне нужно запуститьэто несколько раз для моего моделирования, поэтому я хочу запустить самый внешний цикл (k = 1: K) параллельно в MATLAB.
Из того, что я прочитал, я не могу использовать parfor, так как все функции используют одинаковые переменныеold1 и old2.Я мог бы использовать spmd и распространять свои матрицы old1 и old2.Но я прочитал, что это создает столько же копий переменной, сколько рабочие, и я не хочу, чтобы это произошло.Я мог бы использовать Drange.Но я не уверен, как именно это работает.Мне трудно использовать то, что я читал в ссылках на MATLAB.Любой ресурс и указатели будут очень полезны!
Существуют следующие ограничения: Не следует создавать несколько копий переменных old1, old2.Но я могу распределить его по рабочим, так как каждая итерация не требует других итераций.Распределить приходится только на самый внешний цикл.Для простоты доступа к данным вне этого блока кода.
Спасибо.