我想在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 。
我當時希望能有辦法將工作添加到工作人員可能接觸到的全球工作隊列中,但我一直無法做到。
這是以任何方式可能嗎?如果是的話如何?如果不是這樣,爲什麼?