【问题标题】:Using parfor Loops on matlab在 matlab 上使用 parfor 循环
【发布时间】:2017-01-17 20:51:06
【问题描述】:

我在 Matlab 中使用 parfor 进行并行计算。我不熟悉这个命令。如果可能,请查看下面的代码并告诉我是否可以使用 parfor 编写它。错误 : 由于变量 pyra 的使用方式,无法运行 parfor 循环。

parfor i = 1:inter
  scaled = resize(im, 1/sc^(i-1));
  pyra.feat{i} = descripteurs(scaled,class);

   pyra.scale(i) = 1/sc^(i-1);

  for j = i+inter:inter:max_scale
    scaled = reduce(scaled);
    pyra.feat{j} = descripteurs(scaled,class);
    pyra.scale(j) = 0.6 * pyra.scale(j-inter);
  end
end

【问题讨论】:

  • 您应该从 Mathworks 自己的 extensive documentation 开始,了解 parfor 循环中的变量使用情况
  • 我尝试按照文档中的说明进行更改,但仍然遇到问题。
  • 拜托,我该如何解决这个问题。

标签: matlab loops parfor


【解决方案1】:

问题在于您的代码不可并行化,因为通过parfor 循环的每次迭代都依赖于循环的其他迭代。

具体来说,您正在尝试从内部循环中访问 pyra.scale 的值,这些值是在之前通过外部循环的迭代中计算出来的。因此,parfor 循环的每次迭代的执行都依赖于前一次迭代,因此两个迭代不能并行(同时)执行。

the documentation 中查看有关在parfor 循环中使用变量的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 2023-03-22
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    相关资源
    最近更新 更多