parfor with progress report
2 次查看(过去 30 天)
显示 更早的评论
I would like my parfor loop to count how many of the indices have been handled and display this information during the computations. However, the first code below does not work as MATLAB forces $c$ to be temporary and the second does not work because MATLAB seems to create independent copies of the counting object for each worker.
First try:
c=0; A=zeros(10,1); parfor i=1:10 A(i)=foo(i); c=c+1; c/10 end
--> Error when trying to run, because c is uninitialized.
Second try:
classdef progress <handle properties N; c; end methods function obj=progress(N) obj.N=N; obj.c=0; end function count(obj) obj.c=obj.c+1; fprintf('%f',obj.c/obj.N); end end methods(Static) function test() c=progress(10); parfor( i=1:10,3) c.count(); end end end end
--> Output:
>> progress.test() 0.1000000.2000000.300000 0.1000000.2000000.3000000.400000 0.1000000.2000000.300000
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!