pctRunOnAll does not recognize current parallel pool

Inside a parfor loop I want to surpress warnings with pctRunOnAll but I get the error message: Cannot execute pctRunOnAll warning_off_WarnIfIllConditioned when a parallel pool does not exist. What should I do?
parfor V_g_i = 1:length(V_g_vec)
pctRunOnAll warning_off_WarnIfIllConditioned
%% Other code
[Vi,~] = eigs(mat,1,10^(-19)); % mat is an ill-conditioned matrix
%% Other code
end

 채택된 답변

Edric Ellis
Edric Ellis 2019년 9월 19일
You should use pctRunOnAll at the client, i.e. before the start of the loop, like this:
gcp(); % Ensure we have a parallel pool that parfor will use
pctRunOnAll warning_off_WarnIfIllConditioned
parfor V_g_i = 1:length(V_g_vec)
%% Other code
[Vi,~] = eigs(mat,1,10^(-19)); % mat is an ill-conditioned matrix
%% Other code
end
(I assume warning_off_WarnIfIllConditioned is a script or function you have to make the necessary warning modifications)

댓글 수: 1

Thank you very much. Easy as that. I thought it automatically creates a parallel pool if I insert a parfor.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Parallel for-Loops (parfor)에 대해 자세히 알아보기

제품

릴리스

R2018b

태그

질문:

2019년 9월 18일

댓글:

2019년 9월 19일

Community Treasure Hunt

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

Start Hunting!

Translated by