2

在此处输入图像描述

我的问题是我应该使用什么数据结构将工作分配给每个线程并从中获取计算值。我想到的第一件事是使用包含 x、y 和 iterate_value 的结构填充向量 [0] .. 向量 [63999](对于 800x800 像素)。将这些向量传递给每个节点->然后将给定向量进一步划分给每个核心(Os-thread)->然后将给定向量进一步划分给每个线程。有没有其他可能的方式来发送和接收这些值?并且如果我以向量方式执行此操作,我应该通过值传递向量还是通过引用传递向量,在这种情况下哪个会更好?

4

2 回答 2

4

mandelbrot 集合的不同点需要不同的时间来计算(靠近边缘的点更昂贵),因此给每个工人偶数个像素将使它们中的一些比其他点完成得更快。

将图像分成小矩形(图块)。使用多线程队列创建工作列表,并用图块填充它。每个工作线程循环,从工作列表中挑选一个图块并提交结果,直到工作列表为空。

于 2013-04-17T02:32:35.350 回答
2

像素是均匀分布的,那么为什么要发送每个像素的坐标呢?只需告诉每个节点其左下像素的 x 和 y 坐标、像素之间的间距和像素数。这样,您的工作单元规格是一个小的常数大小。

就更大的设计而言,拥有比物理内核更多的工作线程来运行是没有意义的。每个内核的多个线程的上下文切换只会降低性能。

于 2013-04-17T02:27:33.857 回答