2010-03-09 19 views
5

我recenty問一個關於它被關閉相當快的並行編程算法的問題,由於我的壞溝通我的意圖的能力:最有用的並行編程算法?

https://stackoverflow.com/questions/2407631/what-is-the-most-useful-parallel-programming-algorithm-closed

我最近還提出了另一個問題,具體包括:

Is MapReduce just a generalisation of another programming principle?

另一個問題是關於map reduce,看看mapreduce是否是並行編程中某些其他概念的更具體的版本。這個問題(關於一個有用的並行編程算法)更多的是關於並行編程的全部算法。你不得不原諒我,因爲我對並行編程還很陌生,所以也許MapReduce或者更普通的mapreduce形式是可用的「唯一」並行編程結構,在這種情況下,我爲我的無知道歉。

+1

這是imho主觀 – 2010-03-09 09:03:34

+0

我同意@加布裏埃爾,謝謝。我忘了檢查「社區維基」框 – Zubair 2010-03-09 09:08:02

+0

我會說'make -j ' – 2012-01-07 16:44:50

回答

1

可能有兩個「主要」並行編程結構。

Map/Reduce是一個。在極高的超級通用級別上,它只是平行分而治之。將各個位發送給並行處理程序,並在到達時合併結果。

另一個主要的並行編程構造是管道...工作經歷了一系列階段,每個階段都可以在並行線程中運行。

我認爲幾乎所有的並行化算法都會歸結爲這兩種算法之一。當然,我可能是錯的。

+0

是不是mapreduce只是與管道算法相同,使用兩個管道,一個發送計算,一個得到答案? – Zubair 2010-03-09 09:21:17

+0

@Zubair:不是真的... map reduce將事物並行地發送到多個「管道」,而管道將把所有事情都發送到同一個連續的管道系列中。因此,map/reduce看起來像A - >(B,C,D,E) - > F(B,C,D,E並行獲取請求,並且它們的答案直接到F),而流水線看起來像A-> B-> C-> D-> E-> F - 每個元素都將其數據發送到下一個元素,因此所有到達F的元素都已經經過了A到E. IOW,在一個流水線中,每個步驟都從上一步獲得輸出。 – kyoryu 2010-03-09 11:02:48

+0

感謝您的澄清。如果管道中的所有內容都必須以串行方式處理,那麼並行性在哪裏? – Zubair 2010-03-09 11:19:29