在最近的一篇文章中,我被告知并行工具箱处理警告的方式与常规matlab解雇它的方式有所不同。我觉得那张海报的手去了回答我的问题所以我把它标记为已回答。但是我还有一些额外的问题(希望这不会导致双重发布)。
Error only triggers when I don't use parfor?
我只是想知道是否有人可以向我解释这些差异是什么? parfor沙盒是什么意思?
是否仍然可以将try catch类型结构与并行工具箱一起使用或使用其他一些机制来链接相同的东西?
要清楚当我使用parfor警告消息时仍然会产生告诉我matix是不适应的,但它似乎并没有被误认为是一个错误,尽管我添加了行
warnState(1) = warning('error', 'MATLAB:singularMatrix');
warnState(2) = warning('error', 'MATLAB:illConditionedMatrix');
但是,当我使用常规for循环运行时,它会被选为错误。
因此,并行工具箱正确生成警告,只是不通过上面的代码将它们转换为错误,因此可以在try catch结构中使用它们。
亲切的问候
休
答案 0 :(得分:1)
我认为原始代码中的问题是您仅在MATLAB客户端上将警告更改为错误。要对工人进行更改,您需要执行
spmd
warnState(1) = warning('error', 'MATLAB:singularMatrix');
warnState(2) = warning('error', 'MATLAB:illConditionedMatrix');
end
还有pctRunOnAll函数可以在任何地方运行。
另外,我不知道OP对matlabpool工作者的“沙盒”意味着什么。您的MATLAB客户端和工作人员之间的区别是: