我有这段代码,它连接/组合了一组图像。因为我的图像收集非常大(大数据:-),所以我想将这个顺序代码重新组织成一个并行/分布式应用程序。我正在考虑Map/Reduce,但不确定这在Map/Reduce下是否可行。
#Sequential Code
Result.Image <- NULL
foreach(Image in Image.Collection) {
Result.Image <- CombineImage(Result.Image, Image)
}注:顺序并不重要;合并图像1、2、3、4、5与合并图像2、3、1、4、5一样好。
理想情况下,我会喜欢这样的东西(看起来更像一个经典的divide-et-impera,而不是map/reduce ):

1、2、3、4是原始图像。一个节点将图像#1和图像#2连接成称为图像#5的新图像。第二节点将图像#3和图像#4连接成图像#6,最后一个节点将图像#5和图像#6连接成最终结果。
对于我应该使用哪种框架/并行或分布式设计模式来做这样的事情,有什么想法吗?
干杯!!
发布于 2013-07-12 10:17:17
从您的初始描述(foreach代码)看,在处理#1和#2之前,您似乎无法处理图像#3,因为您在Result.Image中累积了中间结果。现在,您的图显示了一个不同的故事,兄弟节点可以并行处理,我想知道即使是随机节点也可以并行组合。无论如何,我认为您可以将所有初始图像放在FIFO队列中,并在您负担得起的情况下尽可能多地使用处理器(线程、机器或节点)。每个处理器拾取两个图像,将它们组合起来,并将结果放回队列中。你就像这样处理,直到你在队列中得到一个图像。
https://stackoverflow.com/questions/17601275
复制相似问题