我试图创建一个包含parfeval语句和waitbar的matlab独立可执行文件。以下代码在matlab运行时中完美运行。但是,在使用mcc -m test_mcc.m进行编译后,我收到以下错误:
错误:
Error using parallel.FevalFuture/fetchNext (line 243)
The function evaluation completed with an error.
Error in test_mcc (line 11)
Caused by:
An error occurred interpreting the results of the function evaluation.
parallel:fevalqueue:FetchNextFutureErrored
代码:
function test_mcc()
N = 100;
for idx = N:-1:1
% Compute the rank of N magic squares
F(idx) = parfeval(@rank,1,magic(idx));
end
% Build a waitbar to track progress
h = waitbar(0,'Waiting for FevalFutures to complete...');
results = zeros(1,N);
for idx = 1:N
[completedIdx,thisResult] = fetchNext(F);
% store the result
results(completedIdx) = thisResult;
% update waitbar
waitbar(idx/N,h,sprintf('Latest result: %d',thisResult));
end
delete(h)
end
任何线索?
答案 0 :(得分:1)
显然它是R2014a中的一个错误。 Mathworks为我提供了以下支持:
您收到的错误是由Parallel中的错误引起的 计算工具箱。 " parfeval"需要某些组件 编译到独立的应用程序,但这些组件 默认值对MATLAB编译器中的依赖关系分析不可见。 此错误已在R2014b版本中修复。
要在当前的MATLAB版本中解决此问题,请添加 跟随您的M文件行,然后重新编译独立 应用程序使用" mcc":
%#function parallel.internal.queue.evaluateRequest
这一行将允许编译器包含正确的依赖项 进入独立应用程序。