Use several pools of workers in a parfor loop
11 次查看(过去 30 天)
显示 更早的评论
Hi all,
I am currently trying to figure out if there is a way to use multiple pools of workers in a parfor loop. More precisely, I have 16 cores on my computer (8 physical cores) and until now I was using a classical for loop to perform 20 fminunc optimisations.
While fminunc already performs multiprocessing, I found out that the 16 cores of my cluster where only used to 30%, therefore I was thinking about using some kind of parfor loop over three pools of 5 workers in order to increase the efficiency of the computation and hopefully reduce the time of the computation.
I searched for a while now but didn't really find a way to do that...
Thanks a lot !
Gabriel
0 个评论
回答(2 个)
Pravin Jagtap
2019-9-18
Hello Gabriel,
Yes, most of the MATLAB in-built functions are multithreaded from 2008a Release. Following document may help you in accelerating the problem:
A ‘parfor’ will likely to slow the performance since the inbuilt function of optimization is inherently multithreaded and make use of multiple cores calling. For further optimization/speedup we need to dig more into code which uses parfor.
Kind Regards
~Pravin
0 个评论
Matt J
2019-10-16
编辑:Matt J
2019-10-16
Your terminology is a bit confusing. There is only ever 1 pool of workers, but each worker may use multiple cores and the entire pool will always try to make best use of all available processors. To loop with a pool of 3 workers (so roughly 5 cores per worker), you would do,
parfor (i=1:20,3)
x{i}=fminunc(...);
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!