并行算法设计
Posted zhangzefei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并行算法设计相关的知识,希望对你有一定的参考价值。
并行算法的设计基础
并行算法的定义和分类
- 并行算法:一些可同时执行的诸进程的集合,这些进程互相作用和协调动作从而达到给定问题的求解。
并行算法分类
- 数值计算与非数值计算
- 同步算法和异步算法
- 分布算法
- 确定算法和随机算法
并行算法的表达
描述语言
- 可以使用类Algol、类Pascal等。
- 在描述语言中引入并行语句。
并行算法的复杂性度量
串行算法的复杂性度量
- 最坏情况下的复杂度(Worst-CASE Complexity)
- 期望复杂度(Expected Complexity)
并行算法的复杂性度量
- 运行时间t(n):包含计算时间和通信时间,分别用计算时间步和选路时间步作单位。n为问题实例的输入规模。
- 处理器数p(n)
- 并行算法成本c(n):c(n)=t(n)p(n)
- 总运算量W(n):并行算法求解问题时所完成的总的操作步数。
Brent定理
令W(n)是某并行算法A在运行时间T(n)内所执行的运算量,则A使用p台处理器可在t(n)=O(W(n)/p+T(n))时间内执行完毕。
- W(n)和c(n)密切相关
- P=O(W(n)/T(n))时,W(n)和c(n)两者是渐进一致的
- 对于任意的p,c(n)>W(n)
并行算法中的同步和通讯
同步
- 同步是在时间上强使各执行进程在某一点必须互相等待
- 可用软件、硬件和固件的方法来实现
通讯
- 共享存储多处理器使用:global read(X,Y)和global write(X,Y)
- 分布存储多计算机使用:send(X,i)和receive(Y,j)
并行计算模型
PRAM模型
PRAM(Parallel Random Access Machine)模型是多指令流多数据流(MIMD)并行机中的一种具有共享存储的模型。
基本概念
- 由Fortune和Wyllie于1978年提出,又称SIMD-SM模型。有一个集中的共享存储器和一个指令控制器,通过SM的R/W交换数据,隐式同步计算。
结构图
分类
(1)PRAM-CRCW并发度并发写
- CPRAM-CRCW(Common PRAM-CRCW):仅允许写入相同数据
- PPRAM-CRCW(Priority PRAM-CRCW):仅允许优先级最高的处理器写入
- APRAM-CRCW(Arbitrary PRAM-CRCW):允许任意处理器自由写入
(2)PRAM-CREW并发读互斥写
(3)PRAM-EREW互斥读互斥写
计算能力比较
- PRAM-CRCW是最强的计算模型,PRAM-EREW可logp倍模拟PRAM-CREW和PRAM-CRCW
优点
以上是关于并行算法设计的主要内容,如果未能解决你的问题,请参考以下文章
如何为Fibonacci算法设计并行代码,但没有openmp任务?