给定一个未排序的数组,我已经读过一篇文章,可以使用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