У меня есть файл функций, который имитирует матрицу A (размер 100 * 100) для 1000 шагов времени и генерирует конечный результат как A_t1000 (матрица размером 100 * 100).parfor multi core processing matlab
E.g. если A = 100 * 100 при t0, то A_t1 = 100 * 100; A_t2 = 100 * 100; ...... .. A_t1000 = 100 * 100 матрица. Каждый с разными значениями. Поэтому я могу иметь несколько фрагментов A от A_t1 до A_t1000.
Мой файл сценария выполняет итерацию этого процесса на 100 итераций. Файл сценария вызывает эту функцию и генерирует конечную матрицу вывода B_t1000 = A_t1000 * 100. B_t1000 является окончательной матрицей вывода, которая содержит 100 As. Размеры B_t1000 100 * 100 * 100. Начальные входные параметры для файла функций представлены в начале файла сценария.
Я пытаюсь запустить этот код, используя 'parfor'. Цель состоит в том, чтобы запустить каждую итерацию независимо в отдельном ядре, а затем собрать их в конце, чтобы генерировать B. текущий код выглядит примерно так ---
iter=100;
p=0.8;N=1200;
maxgen=1000;
d=0.01;
evalues=(d/2):d:(1-d/2);
cvalues=(d/2):d:(1-d/2); %% p, N are starting parameters
[C,E]=meshgrid(cvalues,evalues); %% Starting 10,000 combinations
B_t1000 = []; %% initializing B_t1000
B_t200= []; %% initializing B_t200
parfor k=1:iter
A_t1000= zeros(length(evalues),length(cvalues)); %%initializing A_t1000
A_t200 = zeros(length(evalues),length(cvalues)); %%initializing A_t200
for i=1:length(evalues)
for j=1:length(cvalues)
e=evalues(i); % starting point input for e for function file
c=cvalues(j); % starting point input for c for function file
[A_t1000, A_t200] = function (e,c,p,N,maxgen); %% calling a function to generate A_t1000 and A_t200
end
end
B_t1000 (1:length(evalues),1:length(cvalues),k) = A_t1000;
B_t200 (1:length(evalues),1:length(cvalues),k) = A_t1000;
end
Я получаю сообщение об ошибке message-- «Переменная B_t1000 в parfor нельзя классифицировать ». Я думаю, что это связано с проблемами независимости и индексирования.
Может ли кто-нибудь помочь мне запустить этот код с помощью parfor?
Увеличьте параметры «Ne» и «maxgen» дольше времени, затрачиваемого на запуск кода только циклом «для». В настоящее время более крупный параметр занимает> 30 часов для запуска без пар. Я хочу уменьшить это время, используя parfor.
Любые предложения, пожалуйста? Благодаря!
спасибо. Попробуй это и сообщишь, как это работает. В настоящее время я запускаю его, преобразовывая Bs как массивы ячеек. Надеюсь, это значительно сократит время работы. – Aditya