MATLAB使用parfor(并行计算工具箱)和自定义包+

时间:2014-09-17 18:54:42

标签: matlab parallel-processing parfor

我正在开发一个MATLAB程序,该程序使用许多其他定制程序包,通常包含类似命名的文件。所以我决定使用自定义包方法(http://www.mathworks.com/help/matlab/matlab_oop/scoping-classes-with-packages.html)在引用我正在使用的各种包中的特定函数时有效地获得点符号。例如,我有一个名为pose的包,它具有以下文件结构:

MATLAB % on the MATLAB path
   --- +pose
          --- detect.m
          --- MORE STUFF
   --- +tracker
          --- MORE STUFF
   --- main.m

在我的main.m文件中,我有一个并行化的for循环:

parfor i=start:stop
    ... BLAH BLAH
    boxes = pose.detect(stuff);
    ... BLAH BLAH
end

但我一直收到错误

MATLAB无法确定“姿势”是否指的是a    功能或变量。    请参阅MATLAB中的“循环并行”,“明确的变量名称”。

查看MATLAB并行编程文档(http://www.mathworks.com/help/distcomp/programming-considerations.html),看起来你在并行for循环中使用的所有函数在for循环中必须是透明的。但这似乎直接违反了MATLAB中的其他并行编程原理,即“所有执行parfor-loop的工作者必须具有与客户端相同的MATLAB搜索路径”。

有谁知道如何调和这个?

1 个答案:

答案 0 :(得分:1)

找到答案!

我通过将path命令放在worker启动文件中来完成此网页http://www.mathworks.com/help/distcomp/share-code-with-the-workers.html的解决方案: matlabroot\toolbox\local\startup.m

所以我添加了行path('/custom_dir/MATLAB/', path);,效果很好。