what is the difference between running backgroundPool and parpool ('Threads') using a parfeval?
显示 更早的评论
parpool('Threads')
delete(gcp('nocreate'))
pool=parpool('Threads')
f(1:8) = parallel.FevalFuture;
for i = 1:8
f(i) = parfeval(pool, @task, 1, i, 'parpool');
end
afterEach(f, @disp, 0);
function output = task(taskID,poolType)
pause(5);
output = sprintf('Task %d is done in %s at %s', taskID, poolType,datetime('now'));
end
backgroundPool
b(1:8) = parallel.FevalFuture;
for i = 1:8
b(i) = parfeval(backgroundPool, @task, 1, i, 'backgroundPool');
end
afterEach(b, @disp, 0);
function output = task(taskID,poolType)
pause(5);
output = sprintf('Task %d is done in %s at %s', taskID, poolType,datetime('now'));
end
I don't think there's any difference between them
回答(1 个)
Walter Roberson
2023-11-25
0 个投票
"Pools created using parpool('Threads') and backgroundPool are both thread-based pools which utilize the same resources. It is possible that activity on one pool may block activity on the other and vice versa. Additionally, persistent data and random number generation stream state are shared in between these pools."
Unfortunately that talks more about the similarities than the differences. The differences are more difficult to find documentation on.
Background pools only support parfeval and parfevalOnAll but do not need the Parallel Computing Toolbox
Thread pools support additional constructs including parfor, but requires the Parallel Computing Toolbox
I do not know if there are any MATLAB functions that support one but not the other
3 个评论
Edric Ellis
2023-11-27
Function support should be identical on both types of pool. The main other difference I think is that the backgroundPool always exists - it does not need to be created like a parpool pool.
It is possible, but not useful, to use this syntax to run parfor on backgroundPool:
parfor (i = 1:10, backgroundPool)
out(i) = 7;
end
Jixiong Su
2023-11-27
Edric Ellis
2023-11-27
Basically, although the pools share resources, they each have some exclusive resources to ensure that progress is never completely blocked by activity on the other pool.
类别
在 帮助中心 和 File Exchange 中查找有关 Parallel Computing Fundamentals 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!