0

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

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

建议我如何使用 SPMD 命令显着提高速度?

4

2 回答 2

1

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

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

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

于 2014-07-17T09:04:06.137 回答
0

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

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

于 2014-07-17T10:58:49.530 回答