并行算法设计

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

技术分享图片

优点

 

以上是关于并行算法设计的主要内容,如果未能解决你的问题,请参考以下文章

算法设计20——并行算法

如何为Fibonacci算法设计并行代码,但没有openmp任务?

FPGA算法映射思考

基于spark实现并行化Apriori算法

Floyd-Warshall算法及其并行化实现(基于MPI)

OpenMP并行编程应用—加速OpenCV图像拼接算法