我将并行计算工具箱 (PCT) 与 MATLAB 2012b 中的 Simbiology 工具箱结合使用。当我使用远程工作人员池而不是本地工作人员池运行脚本时,我收到一条间歇性错误消息:
捕获std::exception
的异常消息是:
vector::_M_range_check
Error using parallel_function (line 589)
Error in remote execution of remoteParallelFunction : RUNTIME_ERROR
Error in PSOFit (line 486)
parfor ns = 1:r.NumSwp
Error in PSOopt_driver (line 209)
PSOFit(ObjFuncName,LB,UB,PSOopts);
当我注释掉对函数 sbiosimulate (用于模型评估的 SimBiology 函数)的调用时,不会发生错误。
我有几个想法:
- 我引入了某种竞争条件,这会导致访问模型变量时出现问题(这在 MATLAB 中可能吗?)
- simbiology 中的模型编译有时但并不总是与 PCT 兼容,而且我遇到了某种极端情况
- 由于 sbiosimulate 评估已编译的 C++ 代码,因此对于某些输入,源中可能存在生成异常的错误
我知道这一点。