zoukankan      html  css  js  c++  java
  • 并行算法设计基础

    并行算法的一般概念

    并行算法的定义

    • 并行算法是适合于在各种并行计算机上求解问题和处理数据的算法。它是一些可同时执行的诸进程的集合,这些进程相互作用和协调动作从而达到对给定问题的求解。

    并行算法分类

    • 数值计算:基于关系的一类运算。如矩阵运算,多项式求解。
    • 非数值计算:基于比较关系的一类运算。如排序、选择、搜索、匹配、图论。
    • 同步运算:某些进程必须等待别的进程(结果)的一类运算。
    • 异步运算:某些进程的执行不必等待别的进程(结果)的一类运算。
    • 有效并行算法:并行算法相对串行算法在性能(效率)方面,器时间关系具有对数特征,则这种并行算法是有效并行算法。

    算法表达

    • 一般采用形式化描述的方法,不提倡使用具体语言描述。
    • 使用的关系词要配对,具有层次感。

    算法分析

    • 一般考虑的是算法的时空复杂度呈现最坏情况下的算法复杂度(即worst-case-complexity)
    • 在MIMD计算模型上的并行算法的参量有:运行时间t(n):在给定的模型上求解问题规模为n的给定问题所需时间,包括:①计算时间tc在某一处理器执行算/逻运算所需时间。②选路时间tr数据从原处理机到目的处理机所需时间。  处理机数p(n):求解给定问题所需的处理机数。
    • 在MIMD计算模型上的并行算法的参量有:通信复杂度:算法在整个执行期间能传送的报文总数。时间复杂度:算法以第一台处理机开始执行到最后一台处理机执行中止所需时间。
    • 界:①上界:令f(n)和g(n)是定义在自然数集合N上的两个函数,如果存在两个正的常数c和n0,使得对于所有n≥n0,均有f(n)≤c*g(n),则称g(n)是f(n)的一个上界,记为f(n)=O(g(n))。②下界:令f(n)和g(n)是定义在自然数集合N上的两个函数,如果存在两个正的常数c和n0,使得对于所有n≥n0,均有f(n)≥c*g(n),则称g(n)是f(n)的一个下界,记为f(n)=Ω(g(n))。③精确界::令f(n)和g(n)是定义在自然数集合N上的两个函数,如果存在正的常数c1,c2和n0,使得对于所有n≥n0,均有c1*g(n)≤f(n)≤c2*g(n),则称g(n)是f(n)的一个精确界,记为f(n)=Θ(g(n))。

    算法指标

    算法开销

    • 并行算法运行时间tp(n)与其所需处理器数量p(n)的乘积,即tp(n)*p(n)
    • 如果ts(n)=tp(n)*p(n)=串行计算的步数(节拍数)则算法称为最优

    加速比

    • Sp(n)=(最快的串行算法最坏的运行时间)/(并行算法最坏的运行时间)=ts(n)/tp(n)
    • 一般有:ts(n)≤p(n)*tp(n)(通信、同步开销);1≤Sp(n)≤p(n)

    效率

    • Ep(n)=Sp(n)/p(n)(加速比/处理机数)
    • 一般有:0<Ep(n)≤1

    并行计算模型

    PRAM:SIMD-SM

    基本概念

    • PRAM(并行随机访问机器)模型也称为SIMD-SM模型,用于细粒度并行计算
    • 采用集中式共享存储器模式,单一的编程访问空间
    • 隐式同步机制

    优点

    • 适于表示和分析并行计算的复杂性
    • 隐匿了并行计算机的大部底层细节(如通信、同步),从而易于使用

    缺点

    • 不适于MIMD计算机,存在存储器竞争和通信延迟问题

    模型图示

    APRAM:MIMD-SM

    基本概念

    • APRAM模型也称为分段(phase)PRAM模型;
    • 用于中粒度的并行计算
    • 采用集中式共享存储器,单一的访问地址空间
    • (进程间)异步操作,但读/写共享变量操作采用显示同步方式

    计算模式

    • 计算由若干个用同步点(barrier)划分的段组成
    • 每一段异步运行局部程序
    • 读/写操作在同步点进行同步

    优点

    • 保存了PRAM的简单性
    • 可编程性和可调试性(correctness)好
    • 易于进行程序复杂性分析

    缺点

    • 不适于具有分布式存储器的MIMD计算机

    计算模式图示

    模型图示

    BSP:MIMD-DM

    基本概念

    • BSP模型是一种分布式存储器的多处理机模型,又称大同步模型
    • 用于中大粒度并行计算
    • (进程间)异步操作
    • 采用报文发送和接收的通信方式进行显示同步

    参数和计算模式

    • BSP把并行计算机抽象为3个参数:P(处理机),g(宽带因子)和l(同步间隔)
    • 计算由同步点(barrier)划分为若干个Supersteps
    • 每个Superstep中实现异步的局部计算
    • 在同步点通过发送和接收h-message进行同步

    优点

    • 把计算和通信分割开来
    • 使用hashing自动进行存储器和通信管理
    • 提供了一个编程环境

    缺点

    • 显式的同步机制限制并行计算机数据的增加
    • 在一个Superstep中最多只能传递h个报文

    BSP编程模式

    BSP的开销

    • Csuperstep=maxWi+maxHig+L
    • process最大延迟时间
    • Wi-进程pi的局部计算时间
    • Hi-进程pi发送和接收的最大包数
    • g-1/带宽(timestep/packet)(吞吐量 带宽因子)
    • L-同步点同步时间间隔(同步点个数)
    • 这里如果g=l=1,则BSP=PRAM-SIMD
    • S=1-›带宽因子,吞吐率100%
    • L=1-›若1个时间间隔为1个时间单位,则为1个同步点

    LogP:MIMD-DM

    基本概念

    • LogP模型是技术趋势,编程经验和现行理论的综合产物
    • 用于大粒度并行计算
    • 使用分布式存储器的单一的和多重访问地址空间
    • 进程间异步操作
    • 采用报文通信方式隐式实现同步操作,即子集同步

    参数和计算

    • LogP模式把通信网络抽象为3个参数:L(网络延时),O(通信开销),g(网络带宽)
    • 计算过程有若干Superstep组成
    • 在每个Superstep中异步地实现局部计算并通过发送/接收L/g报文进行同步

    优点

    • 可捕捉并行计算机的(同步)通信瓶颈(通过发送或接收L/g个报文)
    • 可隐匿拓扑结构,路由算法和网络协议的细节
    • 可用于共享变量,报文传递和数据并行处理等方案

    缺点

    参考文献

    https://wenku.baidu.com/view/382879f2561252d381eb6e5f.html?sxts=1542528770069

  • 相关阅读:
    使用 ASP.NET 2.0 ObjectDataSource 控件

    掌握 ASP.NET 之路:自定义实体类简介
    将 JavaScript 与 ASP.NET 2.0 配合使用
    C# 程序的通用结构
    实例化web service里类的实例
    Web服务枚举组件不可用 修复 (转载)
    09年初步学习计划
    Javascript return false的作用
    如何识别 SQL Server 的版本
  • 原文地址:https://www.cnblogs.com/zhangzefei/p/9980174.html
Copyright © 2011-2022 走看看