0

我有這樣的代碼,串接/組合圖像的集合。我想將這個順序代碼重組爲一個並行/分佈式應用程序,因爲我的圖像集合非常大(大數據:-))。我正在考慮Map/Reduce,但不確定在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一樣好。

理想我想這樣的事情(看起來更像是一個經典不是像地圖鴻溝-ET-而治/縮小):

enter image description here

1,2,3,4是原始圖像。一個節點將圖像#1和圖像#2連接成稱爲圖像#5的新圖像。第二節點串接圖像#3和圖像#4爲圖像#6和最後一個節點會連接圖像#5和#圖像6成最終結果。

在什麼框架/並行或分佈式設計模式,我應該用做這樣的事情任何想法?

乾杯!

回答

0

從初始描述(的foreach代碼)看來你不能處理的圖像#3,直到已經處理#1和#2,因爲你積聚在Result.Image中間結果。現在,你的圖表顯示了一個不同的故事,兄弟節點可以並行處理,我想知道是否偶數節點可以並行組合。無論如何,我認爲你可以把所有的初始圖像放在一個FIFO隊列中,並且拋出儘可能多的處理器(線程或者機器或者節點)。每個處理器拾取兩張圖像,合併它們並將結果放回隊列中。你像這樣處理,直到你在隊列中獲得1張圖像。

+0

喜加布裏埃爾 - 甚至是隨機的節點可以並行結合 - 結合1,2,3,4,5是結合3,2,4,5,1好.....的FIFO隊列解決方案,您描述在我看來是非常好的:-) – MadSeb