中山大学分布式系统课程期末复习大纲

分布式系统复习大纲

Author:胡子昂

Date:2018年6月4日 星期一 下午7:06

总体概述:

  • 本学期学到的章节关系如下:

这里写图片描述

  • 我将所有章节分为了三个部分:

    1. 并行算法运行平台学习
    2. 并行算法前置知识学习
    3. 并行算法学习

    他们的具体关系如下图。接下来,我将根据这三个部分依次进行总结:

    这里写图片描述


Part 1 并行算法运行平台学习


Chap 2 并行编程平台

这里写图片描述

2.1 处理器内并行

  • 微处理器体系结构发展:

    1. 流水线(pipeline):等同于操作系统流水线。

    2. 超标量执行:有多个流水线,同时执行多条相同流水线阶段的指令。

      这里写图片描述

2.2 内存系统性能的极限

  • 延迟:内存收到一条内存字请求,在lus的延迟后,返回数据。则延迟为lus。
  • 带宽:程序每秒钟通过请求内存可获得的最大字节数。
  • 躲避延迟方法:
    1. 预取:预先取更多的数据。
    2. 多线程:一个线程等待时切换到另一个线程。

2.3 并行计算平台剖析

  • 并行计算平台控制结构:

    • SIMD和MIMD:

    SIMD是单指令多数据流,只有一个控制单元,该控制单元将单个指令交给不同处理器执行,机器内部需要进行同步。(并行算法主要研究SIMD)

    MIMD是多指令多数据流,每个处理器有一个控制单元,每个控制单元将指令交给对应的处理器执行,机器内部不需要进行同步

    这里写图片描述

  • 并行计算平台通讯模型:

    • SIMD通信模型:共享地址空间平台(PRAM,即共享内存机器)和消息传递平台。

    共享内存一般用于单一计算机内通讯。

    消息传递一般用于计算机之间通过网络通讯。

2.4 并行平台的物理组织

  • 并行平台物理组织:

    • PRAM的四小类:
      1. EREW:串行读,串行写。
      2. CREW:并行读,串行写。
      3. ERCW:串行读,并行写。
      4. CRCW:并行读,并行写。
    • CRCW(仅限于CW)的四种协议:
      1. 共有:如果处理器写的值相同,则写入。
      2. 任意:当一个处理器写时,其他不能写。(等同于EW)
      3. 优先级:处理器按优先级排序,最高优先级的写,其他不能写。(有优先的EW)
      4. 求和:所有量的总和被写入。类似于O(1)的规约。
  • 网络拓扑结构:

    1. 基于总线:所有处理器通过总线进行通讯和访问内存。

    这里写图片描述

    1. 交叉开关网络:n个处理器和m个内存存储地址,用一个n*m矩阵S访问。例如:当S[i][j]打开时,代表第i个处理器正在访问第j个内存储存地址。

      这里写图片描述

    2. 多级网络:多级网络的每个节点开和关代表两种连接,一种是直通式(a),一种是跨接式(b)。

      这里写图片描述

      多级网络的一种连接例子:omega网络。

      这里写图片描述

      通过切换每个节点的开关,可以将左边8个节点(代表处理器)通过不同方式映射到右边八个节点上(内存)。

      Q:如何通过控制开关将左边节点映射到右边节点?例如如何控制节点将S(010)映射到T(111)。

      A:先求出s⊕t = 101,1代表交叉,0代表平行。因此s->t途径的三个节点分别是交叉平行交叉(101)。

    3. 全连接网络和星型网络:太简单了,略。

    4. 线性网络:连一条线,分为有环和无环。

    5. 2维格网:2维线性网络,分为有环和无环。

    6. k-d格网:有d维,每一维有k个节点。其中,个数为p的线性网络是1-p格网或者p-1格网。

    7. 超立方体:看图,和计算机类似的一种多级网络。

    这里写图片描述

    1. 树网络:同数据结构的树,可分为静态树,动态树,胖树。

      静态树:非叶节点是处理器。

      动态树:非叶节点是开关节点。

      这里写图片描述

      胖树:在动态树的基础上,树层级越高边数越高。

      这里写图片描述

  • 静态互联网络评价:

    • 评价参数:

    • 直径:网络任意两个节点之前的最长距离。

    • 弧连通性:等同于找出网络中任意一个节点,该节点的边数量最小,这个值就是连通性值。
    • 对分宽度:如果要将网络等分,最少需要切多少条边。
    • 成本:网络中总共有多少条边。

    • 评价图:

    这里写图片描述

  • 动态互联网络评价:

    • 评价参数:除成本都一样。

    • 成本:网络中总共有多少个开关。

    • 评价图:

    这里写图片描述

2.5 并行计算机的通信成本

  • 并行计算机的消息传递成本:

    • 评价参数:

    • 启动时间 ts t s :发送节点和接受节点处理消息所花的时间,一条消息只有一次。

    • 每站时间 th t h :消息在节点之间传输时间。(非常小,基本没用过
    • 每字传输时间 tw t w :节点接收一个字节所花的时间。

    • 存储转发(store-forward)时间:(l条链路边,数据大小为m)

    tcomm=ts+mltw t c o m m = t s + m l t w

    (PS: th t h 忽略。)

    • 直通路由(cut-through)时间:(l条链路边,数据大小为m)

    tcomm=ts+mtw t c o m m = t s + m t w

    (PS: th t h 忽略。)

Chap 4 基本通讯操作

这里写图片描述

PS:基本通讯操作一般都是建立在cut-through上。store-forward则只用看直径即可。

PS2:有一种简单的判断T的方法。ts前面的参数是总共进行的步数,tw前面的参数是0节点(首节点)在这个过程中的数据量总和

例如:对一对多广播环形陈列,假设有p个处理器,则步数为logp,首节点每步传递的数据固定为m,总共有logp次,则时间为:T = ts logp + tw m logp

4.1 一对多广播和多对一规约

这里写图片描述

PS:多对一规约就是一对多广播的逆方向

PS2:每一步需要的时间见2.5

  • 环形或线性陈列:假设有p个处理器,对收到数据的节点i,分别向i + p/2,i + p/4,i + p/8…传递数据直到所有数据传递完毕。总共需要logp步。

    广播和规约如下图:

    这里写图片描述

    这里写图片描述

  • 矩阵和向量乘法:n*n矩阵S和n*1向量V的乘法,假设有n*n个处理器。

    Step1:n个处理器将向量中的每个元素广播到矩阵中的相应列中,例如将V[i]广播到S的第i列中。

    Step2:每个处理器负责一个节点,进程乘法计算。

    Step3:每行的n个处理器进行规约,规约到一个处理器中,得到n*1结果向量。

    这里写图片描述

  • 格网:横着来一次线性广播,接着竖着来一次线性广播。假设有p个处理器,则总共需要2log√p步,即logp步。

  • 超立方体:看作n维格网,由于每增加一维增加相同节点数,因此每传递一维需要一步。假设有p个处理器,则总共需要logp步,即维数。

  • 平衡二叉树:做法等同于线性陈列广播。

  • 总结:无论哪种情况,广播和规约的时间都为: T=tslogp+twmlogp T = t s log ⁡ p + t w m log ⁡ p

4.2 多对多广播和规约

这里写图片描述

PS:多对多规约与其说是多对多广播的逆方向,不如说是在多对多广播传递数据的基础上,加上数据处理(求和之类的)

  • 环形或线性陈列:假设有p个处理器。

    Step1:将自己的数据传递给下一个节点。

    Step2 -> (p-1):收到上个节点传递过来的数据后,储存该数据,同时把该数据传递给下一个节点。

    通过p-1步后,每个节点都有所有的数据了。

    由于每次只需要传递m大小的数据,因此所花时间为: T=ts(p1)+twm(p1) T = t s ( p − 1 ) + t w m ( p − 1 ) ​

    这里写图片描述

  • 格网:横着来一次线性广播,接着竖着来一次线性广播。假设有p个处理器,则总共需要2(√p - 1)步。

    第一次广播传递的数据量为m,通信时间为 T1=(ts+twm)(p1) T 1 = ( t s + t w m ) ( p − 1 ) ​

    第二次广播传递的数据量为√pm,通信时间为 T2=(ts+twpm)(p1) T 2 = ( t s + t w p m ) ( p − 1 ) ​

    两个时间加到一起,总时间为: T=T1+T2=2ts(p1)+twm(p1) T = T 1 + T 2 = 2 t s ( p − 1 ) + t w m ( p − 1 )

  • 超立方体:与一对多广播相同,区别是每次节点发送的数据加倍。假设有p个处理器,则总共需要logp步,即维数。

    在第i步中,交换信息的长度为 2i1m 2 i − 1 m ,花费的时间为 ts+2i1mtw t s + 2 i − 1 m t w

    将所有时间相加(等比数列求和),总时间为: T=tslogp+twm(p1) T = t s log ⁡ p + t w m ( p − 1 )

    三者tw相同(废话),ts根据通讯结构不同。

4.3 前缀和(感觉没什么重要的)

  • 每个节点求前缀和的时候,根据自己的节点数选择是否加接收到的数据。

    例如:当节点3(011)在计算前缀和的时候,加第一次(2)和第二次(0 + 1)接收到的数据,最后加上自己即可。

4.4 散发和收集

这里写图片描述

PS:散发发送不同的数据,广播发送相同的数据。

散发方法类似于一对多广播,区别是每次发送的数据不同(减半)

总共时间(三种结构相同): T=tslogp+twm(p1) T = t s log ⁡ p + t w m ( p − 1 )

4.5 多对多私自通讯

这里写图片描述

PS:每个节点都同时进行散发

  • 环形或线形陈列:假设有p个处理器。

    Step1:将自己想发送给其他人的数据(p-1个)传递给下一个节点。

    Step2 -> (p-1):收到上个节点传递的数据集合后,取出属于自己的数据,同时把剩下的数据传递给下一个节点。

    通过p-1步后,每个节点都有所有的数据了。

    由于每步需要传递的数据从(p-1)m依次减m直到0,因此所花时间为: T=ts(p1)+twmp(p1)2 T = t s ( p − 1 ) + t w m p ( p − 1 ) 2 ​

  • 网格:横着来一次线性广播,接着竖着来一次线性广播。假设有p个处理器,则总共需要2(√p - 1)步。

    第一次广播传递的数据量从(p - √p)m依次减√pm直到0,因此所花时间为: T1=ts(p1)+twmp(p1)2 T 1 = t s ( √ p − 1 ) + t w m p ( √ p − 1 ) 2 ​

    第二次广播传递的数据量和第一次一样,因此所花时间和第一次相同。

    两个时间加到一起,总时间为: T=2T1=2ts(p1)+twmp(p1) T = 2 T 1 = 2 t s ( √ p − 1 ) + t w m p ( √ p − 1 )

  • 超立方体:每次向一个方向传递数据,传递的数据包含另一面的所有数据。

    以3维为例:

    这里写图片描述

    Step1:0和1通讯。0传递给1最终传递到(1, 3, 5, 7)四个节点之一的数据,共四个。

    Step2:0和2通讯。0传递给2最终传递到(2, 3, 6, 7)四个节点之一的数据,共四个。(由于3,7之前给过了,因此实际只有(2, 6)两个节点之一的数据)

    Step3:0和4通讯。0传递给2最终传递到(4, 5, 6, 7)四个节点之一的数据,共四个。(由于5,6,7之前给过了,因此实际只有4这个节点的数据)

    通讯结束。

    假设有p个处理器,则一共进行了logp步,每一步都传递了mp/2大小的数据,因此总时间为: T=

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值