MATLAB Answers

parfor doesn't continue to run other jobs when only one worker is working

조회 수: 1(최근 30일)
Zhangxi Feng
Zhangxi Feng 23 May 2020
답변: Edric Ellis 26 May 2020
I have a parfor loop that is supposed to run 7 jobs with 4 workers. Each job executes a .exe program in their individual folders. It successfully completed 5 of the jobs. The 7th job's exe is hanging due to whatever reason, but I also noticed the 6th job wasn't even started after a long time. Why wouldn't Matlab allocate the 6th job to a worker to start it in this case?
The code is simply:
parfor i = 1:size(rotFold,1)
[~,~] = system(['cd /d ',rotFold{i},' & EPSC.exe']);
end
Thanks!
Jesse

  댓글 수: 0

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

답변(1개)

Edric Ellis
Edric Ellis 26 May 2020
parfor sends loop iterations to workers in groups known as "subranges" for efficiency. Also, recent versions of Parallel Computing Toolbox "eagerly" send subranges to workers slightly ahead of when the workers need them. Both of these things taken together can mean that if a single iteration of your loop hangs in this way, then other iterations might never start executing.

  댓글 수: 0

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

제품


릴리스

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by