【问题标题】:Matlab - for loop: create two threads and join them each n iterationsMatlab - for循环:创建两个线程并在每n次迭代中加入它们
【发布时间】:2016-07-13 19:35:07
【问题描述】:

for 循环的每 n 步我都需要执行一个耗时的操作,之后我只需要 n 次迭代(下次我调用这个耗时的操作)——我仍然需要迭代 i-1 的结果来开始计算。

我相信我可以从多线程中受益 - 只有 2 个线程。在我: (第一个线程):继续运行主循环,直到它到达 i + n 并等待第二个线程完成。 (2nd) 做耗时的操作。

无论如何要在 Matlab 中实现它??

for i=1:1:N
  y(i) = g(y(i-1), x(i-1));

  if(mod(i, n) == 1)
    x(i) = f(x(i-n), y(i-1)); %Time consuming
  else
    x(i) = x(i-1);
  end
end

谢谢!

【问题讨论】:

  • 这不是多线程的工作原理。
  • 那么并行处理?

标签: multithreading matlab


【解决方案1】:

您可以将脚本分为两部分: 1. 计算 y 数组的第一个循环 2. 第二个循环计算 x 数组

您可以使用并行计算工具箱来加速第二个循环。例如分担

【讨论】:

  • 我已经编辑了我的代码:y(i) 的计算需要最后更新的 x,所以我不能像你提到的那样将它们分成两个循环。还是谢谢
  • 在这种情况下,即使您可以并行实现它,您也不会看到计算速度方面的太大变化。 x(i) 的计算仍然限制了您的整体计算速度。由于依赖关系,我不认为它可以有效地并行实现。
猜你喜欢
  • 2020-03-18
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
  • 2019-12-15
  • 2022-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多