【问题标题】:How to get significant speed up using Parallel Computing Toolbox of MATLAB in core i7 processor?如何在核心 i7 处理器中使用 MATLAB 的并行计算工具箱显着提高速度?
【发布时间】:2014-07-16 16:27:29
【问题描述】:

我正在研究图像处理。我有一台配备 Intel(R) Core(TM) i7 -3770 CPU @3.40 GHz、RAM 4 GB 配置的计算机。我只想使用 PCT 的 SPMD 命令并行化我们的图像处理算法代码。为此,我将图像垂直分成 8 个部分并将其发送到不同的实验室,并使用 SPMD 命令在不同实验室的不同部分上并行执行图像处理算法。

我从顺序代码中得到了正确的答案。但这比顺序代码花费更多时间。我已经尝试过从最大的图像到最小的图像,但没有得到显着的结果。

建议我如何使用 SPMD 命令显着加快速度?

【问题讨论】:

  • Matlab 的很多函数都是开箱即用的多线程函数。我不知道你使用的是不是这些,但我建议你测试它们并自己找出来。启动大型图像处理功能,看看您计算机上的性能监视器是如何亮起的。
  • 我同意@HighPerformanceMark - 许多图像处理工具箱功能已经是多线程的,并且多线程通常比SPMD使用的多进程方法获得更好的性能,因为数据不需要被转移。

标签: matlab image-processing parallel-processing processor spmd


【解决方案1】:

由于您没有提供任何代码,我将不得不坚持一个一般性的答案。在所有并行计算中都有几个设计考虑因素,其中最重要的两个是:您的代码是否能够并行运行,其次:您会产生多少通信开销。

调用工人意味着来回发送信息,因此在并行计算中存在一个最优值。确保为您的工作人员提供足够的工作,以便与工作人员之间的通信所需的时间少于并行计算所获得的加速时间。

最后但同样重要的是:如果您提供一个有效的代码示例,社区就能更好地帮助您!

【讨论】:

    【解决方案2】:

    如果您想对图像中的多个块应用相同的操作,那么不必担心诸如spmd 之类的构造,您只需应用命令blockproc 并将UseParallel 选项设置为true .它将为您并行处理所有内容,而您无需执行任何操作。

    如果这对您不起作用,并且您确实需要直接使用 spmd 实现您的算法,您需要发布一些示例代码来说明您尝试过的内容以及出错的地方。

    【讨论】:

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