2

我正在使用 Povray 在集群上渲染图像。每个工作节点都将渲染部分图像。这个问题的主题是找到一个合适的分裂算法。

Povray 逐像素渲染。但是每个像素都具有独特的复杂性,因此渲染它需要不同的时间。

我将图像划分为许多区域。例如,2x2 像素区域。并渲染了其中一些区域。这些区域的复杂性会影响周围区域的复杂性,因此整个区域阵列都充满了复杂性值。

我将图像划分为多个区域。每个区域定义:

  • 开始栏,结束栏。
  • 开始行,结束行。
  • 该区域的复杂性。

目标是创建一个工作列表,合并后覆盖所有区域。这些工作应该具有类似的复杂性。

每个 Job 定义:

  • 开始栏,结束栏。
  • 开始行,结束行。

禁忌:

  • 作业的有效宏区域是矩形或正方形的形式。
  • 作业数为 N。
4

2 回答 2

1

感谢您更新您的问题。

作为一种替代策略,您可以采用主从安排,在这种安排中,工人向老板流程要求工作,完成工作,然后要求更多工作。老板分发一小部分工作,直到没有工作为止。这种策略的优点是,只要选择的作业足够小(例如 2x2 像素正方形),所有工作人员都会一直忙到接近尾声,并且您无需事先计算区域复杂度的显式估计。

于 2010-12-07T16:00:49.727 回答
0

我最终使用的算法非常复杂且效率低下,因此我愿意接受下一个答案。

https://gist.github.com/gists/729677

于 2010-12-06T01:06:09.990 回答