給定一個未排序的數組,我已經讀過一篇文章,可以使用n平方處理器來獲得O(1)複雜度中數組的最大元素。任何人都可以解釋它背後的機制嗎?並行處理的計算順序
回答
該算法背後的機制是基於我只能稱之爲骯髒的伎倆。也就是說,我們允許所有處理器同時寫入相同的共享內存位置。如果它們都寫入相同的值,則結果被認爲是明確的。
這可以用來實現並行運算符和並行運算符。這裏是例如parallel-OR:
result := false
for i in 0 to N-1 parallel do
if a[i] then
result := a[i]
我們還允許同時讀取。
這裏的MAX算法:
N := a.length
for i in 0 to N-1 parallel do
m[i] := true
for i in 0 to N-1 parallel do
for j in 0 to N-1 parallel do
if a[i] < a[j] /* dirty trick: simultaneous read by many processors */
then m[i] := false /* dirty trick: many processors write to m[i] at once */
for i in 0 to N-1 parallel do
if m[i]
then max := a[i] /* dirty trick: many processors write to max at once */
return max
抽象的體系結構,允許這些技巧被稱爲CRCW PRAM。
哇。非常好。 – RBarryYoung
這是一個後續| V |廣告的答案(這已被刪除),
您使用大小n
的附加陣列(讓叫它B), 現在你使用n-1
處理器比較任意元素a[i], i=0,...,n-1
與所有其他元素a[0],...,a[i-1],a[i+1],...,a[n-1]
,每一個發現,即發現a[0] > a[j]
,處理器j={1,...,n-1}
將適用B[i]=B[i]+1
,此外,它會檢查是否B[i]=n-1
,如果是的話,它會宣佈元素我是最大的元素。
雖然看起來它有同樣的問題,但多個處理器將如何執行B [我] = B [我] + 1'一次? – IVlad
- 1. 圖像處理中的並行計算?
- 2. 與多處理並行處理慢於順序
- 3. 確定處理順序爲(幾乎)就地計算
- 4. IO計算順序
- 5. 並行處理大數據集上的順序任務的多次評估 - GPU計算的任務?
- 6. XSLT順序處理
- 7. XSL處理順序
- 8. 快速處理計算器並卡住
- 9. 與連續行的計算處理
- 10. Python中的多處理並不比按順序執行更快
- 11. 集羣系統上的Java並行處理(集羣計算)
- 12. 並行計算中處理器和進程之間的區別?
- 13. 處理錯誤數據庫的最佳技術(並行計算?)
- 14. 使用事件處理程序的BMI計算器計算
- 15. 在進行順序計算時保持操作順序
- 16. 使用承諾進行順序處理
- 17. 批處理命令執行順序
- 18. 按順序執行批處理指令
- 19. 順序運行批處理代碼
- 20. 按順序運行批處理文件
- 21. 順序處理比池處理更快
- 22. 使順序處理異步而不使用「並行」操作
- 23. 使用原型並處理執行順序
- 24. Web服務是按順序還是並行處理?
- 25. 正在按順序處理並行任務
- 26. 爲並行和順序工作批處理和啓動命令
- 27. SQL計數行並按順序顯示
- 28. 預計中的並行處理
- 29. GPU上的圖像處理算法,並行處理Matlab
- 30. 多處理程序表格計算文件中的行python
請參閱這篇文章? –
你確定它不是一個概率算法嗎? – Leeor
這是可能的併發隨機訪問機器。 – arshajii