Parfor or parfeval, what is better?
5 次查看(过去 30 天)
显示 更早的评论
if I have some code that could be writed in same way with parfeval o parfor, what i have to use? What is better? Which is more advantageous, faster... e.g:
parfor i = 1:n
result = function(data);
end
or
for i = 1:n
F(i) = parfeval(@function, 1, data);
end
for i = 1:n
[index, value] = fetchNext(F);
end
2 个评论
Rik
2018-7-14
I couldn't find any comparisons with a quick search, although I did find that parfeval is (or used to be?) 'plagued by memory a leak'. I checked the release notes for mentions of parfeval, but nothing popped up.
In general I would assume that parfor is a better choice, but that might be a knee jerk reaction because of the feval part of its name.
Edric Ellis
2018-7-16
采纳的回答
Edric Ellis
2018-7-16
At least some of the trade-offs are:
- parfor is generally easier to use, and the code probably looks much more like your serial code
- parfor loops can be used by people who don't have Parallel Computing Toolbox
- parfor loops perform a degree of load-balancing to try and minimise overheads
- parfeval gives you complete control over how the work is chunked up for the workers
- parfeval is asynchronous, and lets the MATLAB client get on with other stuff while the workers are busy (e.g. updating plots or other visualisations)
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Parallel for-Loops (parfor) 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!