Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 区域分配问题_Algorithm_Graph Algorithm - Fatal编程技术网

Algorithm 区域分配问题

Algorithm 区域分配问题,algorithm,graph-algorithm,Algorithm,Graph Algorithm,我使用Povray在集群上渲染图像。每个工作节点将渲染一个局部图像。这个问题的主题是找到一个合适的分裂算法 Povray逐像素渲染。但每个像素都有其独特的复杂性,因此渲染它需要不同的时间 我将图像分为多个区域。例如,2x2像素区域。并对其中一些区域进行了渲染。这些区域的复杂度会影响周围区域的复杂度,因此整个区域数组将填充一个复杂度值 我将图像分为多个区域。每个区域定义: 开始列,结束列 开始行,结束行 该区域的复杂性 目标是创建一个合并后覆盖所有区域的工作列表。这些工作应该具有类似的复杂性

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

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

我将图像分为多个区域。例如,2x2像素区域。并对其中一些区域进行了渲染。这些区域的复杂度会影响周围区域的复杂度,因此整个区域数组将填充一个复杂度值

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

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

每个作业定义:

  • 开始列,结束列
  • 开始行,结束行
合同:

  • 作业的有效宏区域为矩形或正方形
  • 工作的数量是N

我最后使用的算法非常复杂且效率低下,因此我对下一个答案持开放态度


感谢您更新您的问题


作为一种替代策略,您可以采用主从式安排,在这种安排中,工人从老板那里请求工作,完成工作,然后请求更多的工作。老板把零碎的工作分发出去,直到没有剩余的工作为止。此策略的优点是,如果选择的作业足够小(例如2x2像素正方形),则所有工人都将一直忙到最后,而且您无需事先计算区域复杂性的显式估计。

复杂性是简单的相加还是与区域面积相关?应该有多少个工作?您能让目标更精确一点吗?也许您需要一个最小-最大标准:在所有作业中,最小化最慢作业的执行时间。也许您还限制了作业的总数?正如问题目前所述,有一个简单的解决方案:一个作业中的所有区域。我们需要更多关于作业数量的信息。作业数量取决于集群中工作机器的数量。所以,我们可以说是N。这是一个很好的选择。尽管如此,Povray渲染场景所需的最短时间为1.2秒(加载时间)。当一起渲染8-10个像素时,您开始看到时间上的差异。因此,这可能只是一个调整的问题,以采取适当数量的像素,但这样的数字可能是相当不同的图像。例如,具有光能传递和相同大小的图像可能需要4倍的时间。@Nerian:请记住,如果某些作业需要4倍的时间,只要最长的作业时间相当小,这并不重要:如果老板发出的最长作业需要10秒,则任何机器空闲的最长时间都是10秒(如果两台或多台计算机同时完成了当前作业,并且该作业是唯一剩余的作业,则会发生这种情况)。您认为您可以估计区域复杂性(根据区域所需的处理时间)吗更准确地说,要达到一个好的复杂度估计需要大约20秒,所以你的想法是一个准确的推理。