【问题标题】:MATLAB using parfor (parallel computing toolbox) and custom packages with +MATLAB 使用 parfor(并行计算工具箱)和带有 + 的自定义包
【发布时间】:2014-09-17 18:54:42
【问题描述】:

我正在开发一个 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 无法确定“姿势”是否指的是 函数或变量。 请参阅 MATLAB 中的并行 for 循环,“明确的变量名称”。

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

有人知道如何调和吗?

【问题讨论】:

    标签: matlab parallel-processing parfor


    【解决方案1】:

    找到答案了!

    我从这个网页http://www.mathworks.com/help/distcomp/share-code-with-the-workers.html 完成了解决方案,方法是将路径命令放入工作程序启动文件中: matlabroot\toolbox\local\startup.m

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多