Parfor hangs during execution
显示 更早的评论
How i can solve this problem that freeze parfor during execution?
Operation terminated by user during distcomp.remoteparfor/getCompleteIntervals (line 225)
In parallel_function>distributed_execution (line 823)
[tags, out] = P.getCompleteIntervals(chunkSize);
In parallel_function (line 590)
R = distributed_execution(...
11 个评论
OCDER
2018-7-13
You'll need to provide us with the parfor code you're running. This error message only says you intentionally did a "ctrl+c" command to stop the code.
Andrea Stevanato
2018-7-13
编辑:Andrea Stevanato
2018-7-13
How long does this take without parfor? Use profile to figure out the bottleneck https://www.mathworks.com/help/matlab/ref/profile.html. Debugging in parfor is hard because you can't stop the code at the slowest step, and profiler doesn't time each function inside parfor.
>>profile on
index = 1;
seedPoint = seedPopulation.Value.Individuals(index);
nCrossover=2*round(constant.crossoverProbability.Value*nFliesPopulation/2);
[fliesPopulation(index), spamPopulation(index)] = Algorithms.TeMA.evolution(...
seedPoint, fliesPopulation(index), collectPopulation(index),...
nCrossover, primary, sizeOfRing, constant);
>>profview
Andrea Stevanato
2018-7-13
编辑:Andrea Stevanato
2018-7-13
Andrea Stevanato
2018-7-13
编辑:Andrea Stevanato
2018-7-13
Andrea Stevanato
2018-7-13
OCDER
2018-7-13
Hm... This seems to have happened to multiple people. Is any function generating or passing on large data sets (> 2GB)?
Seemed like breaking up the data into smaller chunks helped one person.
Andrea Stevanato
2018-7-13
OCDER
2018-7-13
That's hard to say. Do you have a random number generator in the software? Perhaps memory usage differs, depending on what other software are running at the same time. There's also a job timing issue going on in the back, which always changes between runs depending on the current jobs a CPU has to run. Also, you could get a deadlock situation randomly, if multiple workers are trying to read/write to the same file at the same time. Are you doing some sort of read/write operation?
https://en.wikipedia.org/wiki/Deadlock Deadlocks are issues unique to parallel computing.
Andrea Stevanato
2018-7-14
Andrea Stevanato
2018-7-14
回答(6 个)
Muhammad Adil Raja
2019-1-27
1 个投票
I am having this same issue for the last couple of days.
Gergely Papp
2019-7-2
1 个投票
I have encountered the same issue, both with 2017/b and 2019/a. The calculations launch in the parallel workers, but along the way they hang 1-by-1. They would hang for days if I don't kill them manually.
Jayaram Theegala
2018-7-16
编辑:Jayaram Theegala
2018-7-16
0 个投票
Hello Andrea,
In order to understand the issue better, can you try reducing the number of iterations on your first loop, by setting "it" variable used in your first "for" loop to 1. Also, it may be helpful to just start your pool with 1 worker, and see if the issue still persists.
If the issue continues to happen even after the above changes, provide the following information:
1) Brief information about the function used within the parfor loop: Algorithms.TeMA.evolution
2) Does the issue happen without the above function?
3) Finally, it is generally advisable for outer-most loop to be parfor and the inner loops being for loops. https://in.mathworks.com/help/distcomp/nested-parfor-loops-and-for-loops.html
Zachary Eilon
2019-6-26
I am having a similar problem. A simple demo code is shown below, which enters an infinite loop within the parfor. This is on a 2-core MacBook Pro with 3.3 GHz Intel i7 processor. Running Matlab R2017b, but the same code seems to cause problems on a machine running R2019a.
k = 1e10;
tic
for i = 1:k
tan(i);
end
toc
parpool(2);
tic
parfor i = 1:k
tan(i);
end
toc
2 个评论
lingyan yang
2021-1-3
is ther any updates I am encountering same issue with both matlab2019a and matlab 2020b. I am using particle swarm parallel setting, the optimization hangs in the middle of optimization, and won't continue untill i restart the system, very annoying
Nick
2021-5-25
Same with me. Particle swarm function on Matlab 2020b in parallel macbook with 6 cores.
DeepSea
2021-8-15
I've been stucked in this problem for couples of weeks, and fixed it by removing "continue" in an if-judgement and a for-loop.
for CondA
...
if CondB
continue; % Avoid using "continue"
end
...
end
类别
在 帮助中心 和 File Exchange 中查找有关 Introduction to Installation and Licensing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!