Algorithm 区域分配问题
我使用Povray在集群上渲染图像。每个工作节点将渲染一个局部图像。这个问题的主题是找到一个合适的分裂算法 Povray逐像素渲染。但每个像素都有其独特的复杂性,因此渲染它需要不同的时间 我将图像分为多个区域。例如,2x2像素区域。并对其中一些区域进行了渲染。这些区域的复杂度会影响周围区域的复杂度,因此整个区域数组将填充一个复杂度值 我将图像分为多个区域。每个区域定义:Algorithm 区域分配问题,algorithm,graph-algorithm,Algorithm,Graph Algorithm,我使用Povray在集群上渲染图像。每个工作节点将渲染一个局部图像。这个问题的主题是找到一个合适的分裂算法 Povray逐像素渲染。但每个像素都有其独特的复杂性,因此渲染它需要不同的时间 我将图像分为多个区域。例如,2x2像素区域。并对其中一些区域进行了渲染。这些区域的复杂度会影响周围区域的复杂度,因此整个区域数组将填充一个复杂度值 我将图像分为多个区域。每个区域定义: 开始列,结束列 开始行,结束行 该区域的复杂性 目标是创建一个合并后覆盖所有区域的工作列表。这些工作应该具有类似的复杂性
- 开始列,结束列
- 开始行,结束行
- 该区域的复杂性
- 开始列,结束列
- 开始行,结束行
- 作业的有效宏区域为矩形或正方形李>
- 工作的数量是N
感谢您更新您的问题
作为一种替代策略,您可以采用主从式安排,在这种安排中,工人从老板那里请求工作,完成工作,然后请求更多的工作。老板把零碎的工作分发出去,直到没有剩余的工作为止。此策略的优点是,如果选择的作业足够小(例如2x2像素正方形),则所有工人都将一直忙到最后,而且您无需事先计算区域复杂性的显式估计。复杂性是简单的相加还是与区域面积相关?应该有多少个工作?您能让目标更精确一点吗?也许您需要一个最小-最大标准:在所有作业中,最小化最慢作业的执行时间。也许您还限制了作业的总数?正如问题目前所述,有一个简单的解决方案:一个作业中的所有区域。我们需要更多关于作业数量的信息。作业数量取决于集群中工作机器的数量。所以,我们可以说是N。这是一个很好的选择。尽管如此,Povray渲染场景所需的最短时间为1.2秒(加载时间)。当一起渲染8-10个像素时,您开始看到时间上的差异。因此,这可能只是一个调整的问题,以采取适当数量的像素,但这样的数字可能是相当不同的图像。例如,具有光能传递和相同大小的图像可能需要4倍的时间。@Nerian:请记住,如果某些作业需要4倍的时间,只要最长的作业时间相当小,这并不重要:如果老板发出的最长作业需要10秒,则任何机器空闲的最长时间都是10秒(如果两台或多台计算机同时完成了当前作业,并且该作业是唯一剩余的作业,则会发生这种情况)。您认为您可以估计区域复杂性(根据区域所需的处理时间)吗更准确地说,要达到一个好的复杂度估计需要大约20秒,所以你的想法是一个准确的推理。