Shut down parallel pool - only working for parfeval() but not spmd
15 次查看(过去 30 天)
显示 更早的评论
Hello all,
I would like to shut down my parallel pool by a button press in a Matlab GUI to stop the execution of functions running on these pool workers.
Unfortunately this only works when starting the functions with "parfeval()". In this case, as soon as I press the button, my parallel pool is shutting down and therefore the functions called with parfeval() stop running.
As I prefer using "spmd" over "parfeval" to establish communication between the workers, I tried the same but it failed.
Nothing is happening on a button press and the parallel pool is only shutting down as soon as I cancel the whole script with ctrl+c.
Hope someone can assist me with this problem.
Working:
function StartButtonPushed1(app,event)
pool = gcp();
parfeval(pool, @dosomething, 0, app);
end
Not working:
function StartButtonPushed2(app,event)
pool = gcp();
spmd
dosomething(app);
end
end
Stop-button:
function StopButtonPushed(app,event)
delete(gcp); %shutdown pool
end
0 个评论
回答(1 个)
Deepak Meena
2021-6-28
Hi,
delete(gcp) works with spmd as well.
Try:
spmd,workers=labindex,end
delete(gcp)
This will shut down the current parallel pool. The problem might be with the dosomething(app) that you are doing inside the spmd function.
Please elaborate on the dosomething(app) so we can investigate further.
Thanks
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Parallel Computing Fundamentals 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!