Problem with parfor with two variables

1 回表示 (過去 30 日間)
B.E.
B.E. 2021 年 11 月 23 日
コメント済み: B.E. 2021 年 11 月 24 日
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 件のコメント
Edric Ellis
Edric Ellis 2021 年 11 月 24 日
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.
B.E. 2021 年 11 月 24 日
Thanks Edric,
The size of the calculated array exceeds the size of the memory. I reduce the number of cores to 12, it works, but the execution time is great about 50h.
Thank you again.

サインインしてコメントする。

回答 (1 件)

Matt J
Matt J 2021 年 11 月 24 日
編集済み: Matt J 2021 年 11 月 24 日
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

カテゴリ

Help Center および File ExchangeParallel for-Loops (parfor) についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by