我想在matlab中建立一个递归树结构。由于它是一个非常大的树,我正在尝试构建,所以我想尽可能加快计算速度,这就是为什么我想尝试并行计算。递归树结构的并行计算
的什么我试图做可能看起来像这样的一个例子:
function result = minimalExample(x)
n = numel(x);
if n == 0
result = 0;
return;
end
if n==1
result = x;
return
end
average = mean(x);
result = minimalExample(x(x<average))+minimalExample(x(x>average));
if any(x==average)
result = result*average;
end
end
我试图用parfeval
做这样的计算:
function result = minimalExampleParallel(x,pool)
n = numel(x);
if n == 0
result = 0;
return;
end
if n==1
result = x;
return
end
average = mean(x);
f(1) = parfeval(pool,@minimalExampleParallel,1,x(x<average),pool);
f(2) = parfeval(pool,@minimalExampleParallel,1,x(x>average),pool);
result = 0;
for i = 1:2
[~,value] = fetchNext(f);
result = result + value;
end
if any(x==average)
result = result*average;
end
end
但我得到一个Workers cannot execute parfeval or parfevalOnAll.
-error 。
我当时希望能有办法将工作添加到工作人员可能接触到的全球工作队列中,但我一直无法做到。
这是以任何方式可能吗?如果是的话如何?如果不是这样,为什么?