Problem with parfor with two variables
Afficher commentaires plus anciens
Hi,
My code below is executed normally without the parfor command i.e with the for command.
Moreover when I reduce the numbre of cores to 4 in parfor command, the code run normally, it will be displayed on the screen ('Time to calculate the (i,j)th couple is ....) but if I use all the 32 cores I didn't see anything in my screen after 24h of the execute my code.
Can you help me this is urgent.
Thank you for our help.
%% My code
Y_1 =zeros(N,numel(alpha),numel(beta));
Y_2 =zeros(N,numel(alpha),numel(beta));
parfor k =1:numel(alpha)*numel(beta)
Tm=tic;
[i,j]=ind2sub([numel(alpha),numel(beta)],k);
[Y_1(:,k),Y_2(:,k)] = My_Fun(alpha(i),beta(j),..);
fprintf('Time to calculate the (%d,%d)th couple is %f \n',i,j,toc(Tm))
end
4 commentaires
Rik
le 23 Nov 2021
You could try creating files instead. That way you bypass any restrictions from the command window.
Also, you probably want f instead of d in your format specification. The time is not likely to be an integer.
B.E.
le 23 Nov 2021
Edric Ellis
le 24 Nov 2021
I would check the memory usage on your system. It may be that when using 32 cores, you're overwhelming the system memory and things are running extremely slowly.
B.E.
le 24 Nov 2021
Réponses (1)
Do you need to see the toc output in real time? If not, just save it until later:
%% My code
Y_1 =nan(N,numel(alpha),numel(beta));
Y_2 =nan(N,numel(alpha),numel(beta));
Times=nan(numel(alpha), numel(beta));
parfor k =1:numel(alpha)*numel(beta)
Tm=tic;
[i,j]=ind2sub([numel(alpha),numel(beta)],k);
[Y_1(:,k),Y_2(:,k)] = My_Fun(alpha(i),beta(j),..);
Times(k)=toc(Tm);
end
Catégories
En savoir plus sur Parallel for-Loops (parfor) dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
