致谢


1 并行计算机系统及结构模型

1.1 并行计算

在下面的讲解之前,我们先看一下并行计算的量纲。

并行计算和Hadoop 并行计算架构与模式_并行计算和Hadoop

1.1.1 并行计算和计算机科学

随着计算机和计算机学科的发展,所有的学科都转向定量化和精确化,因此也出现了很多计算开头的学科,如计算数学、计算物理、计算生物等。目前所有的学科可以归结为三大类:即理论科学、实验科学和计算科学。其中计算科学是一个交叉学科,用计算的方法来解决应用问题,但是其中的问题也暴露出来——很多理论模型复杂或尚未建立、实验费用昂贵或无法进行。

为此,很多模型在无法实际操作的情况下,通过超级计算机的仿真模拟,可以初步探测该模型的可行性。比较常见的应用就是气象局天气预报、原子弹爆炸模拟等。

并行计算技术是一个国家的综合国力的体现,并行计算在国民经济、国防建设和科技发展中占有重要的战略地位。在飞机设计、药物设计、全球气候预测、人类基因等巨大挑战性问题时,并行计算机发挥了巨大的作用。

国家目前正在大力发展高性能计算,在军事上,我国拥有银河、神威等超级计算机;在民用上,我国拥有曙光、联想等超级计算机。需要注意的是,在08年时,我国的国产高性能计算机就已经进入TOP500前十位,总数也在大幅增加。

1.1.2 当代科学与工程问题的计算需求

并行计算需求有很多种。一般分为计算密集型应用、数据密集型应用、通信密集型应用。

计算密集型应用应用于大型科学工程计算,数值模拟等,其应用领域通常在石油、气象、CAD、核能、制药、环境监测分析、系统仿真等。

数据密集型应用则应用于数字图书馆、数据仓库、数据挖掘、计算可视化等,应用领域通常在图书馆、银行、证券、税务、决策支持系统等。

通信密集型应用应用于协同工作、网格计算、遥控和远程诊断等。其应用领域通常在网站、信息中心、搜素引擎、电信、流媒体等。

1.2 并行计算机系统互连

1.2.1 系统互连

不同带宽和距离的互连技术有多种,比较常用是:广域网WAN、城域网MAN、局域网WAN、个人区域网PAN、总线。广域网一般跨国,城域网一般城市,局域网一般一栋楼,个人区域网一般几台设备。其中广域网使用了交换技术,而局域网使用的是广播技术。如果是使用总线的话,总线是最快的,你可以理解为总结传输时不需要网络,直接用一条USB连接的那种。

网络性能指标一般由下面的参数来衡量:

  • 节点度:射入或射出一个节点的边数。在单向网络中,入射和出射之和称为节点度。
  • 网络直径:网络中任何两个节点之间的最长距离,即最大路径数。由于网络直径过长会导致两台计算机太远,通信容易延迟,所以我们一般要求网络直径要尽可能的短。
  • 对剖宽度:对分网络各半所必须移去的最少边数。
  • 对剖带宽:每秒内,在最小的对剖平面上通过所有连线的最大消息位数

1.2.2 静态互连网络

静态互联网络是处理单元间有着固定连接的一类网络,在程序执行期间,这种点到点的连接保持不变;典型静态网络有一维线性阵列、二维网孔、树连接、超立方网络、立方环、洗牌交换网、蝶状网络等。

换而言之,静态互连网络就是用一个链路把多个处理器连接起来,构成物理意义上的并行计算机,如果某个处理器想发信息给另外一个处理器,总是能通过这条链路来干这种事。

1.2.2.1 一维线性阵列(1-D Linear Array)

一维线性阵列可以看成是单链表,即每个节点只与左右相邻相连,故其别名为二近邻连接。N个结点用N-1条边串联而成,内结点度为2,直径为N-1,对剖宽度为1。

并行计算和Hadoop 并行计算架构与模式_云计算_02

这种结构虽然简单方便,但是恢复性较差。而且首尾两个计算机太远了,时延也差。所以在构造并行计算机时基本不采用。

如果将上述网络拓扑收尾节点重合,即可变为。环可以是单向可以是双向,其节点度也是2,直径为N/2或N-1,对剖宽度为2。

并行计算和Hadoop 并行计算架构与模式_算法_03

1.2.2.2 二维网孔(2-D Mesh)

二维网孔是并行计算机中较为常用的。设二维网孔为并行计算和Hadoop 并行计算架构与模式_并行计算和Hadoop_04大小。其每个节点只与其上下左右的近邻相连,边界除外,节点度为4,网络直径为并行计算和Hadoop 并行计算架构与模式_云计算_05,对剖宽度为并行计算和Hadoop 并行计算架构与模式_并行计算机_06

当然,二维网孔也有拓展类型,详见下图这里不再赘述。

并行计算和Hadoop 并行计算架构与模式_算法_07

1.2.2.3 树结构

一般采用树的网络拓扑结构用的大多数是二叉树。除了根、叶节点以外,每个内节点只与其父节点和子节点相连。

节点度为3,对剖宽度为1,而树的直径为2[logN]-1。如果尽量增加节点度,则直径缩小为2,此时就变成了星型网络,其对剖宽度为[n/2]。

传统的二叉树的主要问题是根容易成为通信瓶颈,且时延很低可恢复性也很差。,因而出现了新型的胖二叉树

胖树的含义是:越往根部走,通信链路就越宽,这样能够有效避免根位置出现通信瓶颈的情况。

星型模式下处于中间位置的节点会成为通信瓶颈,因为所有的通信都要经由它传输。

并行计算和Hadoop 并行计算架构与模式_算法_08

1.2.2.4 超立方

当结点按正方体的模样构建拓扑结构,每个角作为结点处,那么我们把这个拓扑结构叫做3-立方,将两个3-立方对应顶点相连,则可以构成4-立方。以此类推,n-立方也可以这么干。

并行计算和Hadoop 并行计算架构与模式_算法_09

这样的超立方结构虽然性能较好但是扩展性却不好,因为每扩展一次立方,每个节点的度数变高,这样扩展起来很麻烦。

我们也可以把正方体对应的角换成三节点环,就可以将拓扑结构变成立方环。

并行计算和Hadoop 并行计算架构与模式_高速缓存_10

如果是4-立方,那么每个角就要换成4个结点构成的环。

1.2.2.5 小结

并行计算和Hadoop 并行计算架构与模式_并行计算机_11

对于网络拓扑结构来说,节点度数衡量其网络的复杂度,而链路数衡量其网络的代价。

1.2.3 动态互连网络

动态网络是用交换开关构成的,可按应用程序的要求动态地改变连接组态;典型的动态网络包括总线、交叉开关和多级互连网络等。

这种网络比较普遍的是总线上面挂交换器。我们知道同一时间段中,一条总线只允许两头的设备进行信息交换,而在交换完成后,交换器可以将总线的端口改变,使其连接另外一个设备。通过这种方法,可以根据我们应用的需求,动态地选择我们需要的设备。

1.2.4 嵌入

在互联网络中还有另外一个概念叫嵌入。其做法是将网络中的各节点映射到另一个网络中去。用膨胀系数来描述嵌入的质量,它是指被嵌入网络中的一条链路在所要嵌入的网络中对应所需的最大链路数。如果该系数为1,则称为完美嵌入。

对于环网和超立方来说,两者皆可被完美嵌入到2D环绕网中。

1.2.4 标准互连网络

常用的标准互连网络如下:

  • 光纤分布式数据接口(FDDI)
  • 快速以太网
  • Myrinet
  • SCI
  • InfiniBand

1.3 并行计算机系统结构

1.3.1 并行计算机结构模型

1.3.1.1 PVP

PVP也叫并行向量处理机(Parallel Vector Processor),其内部含有为数不多、功能强大的定制向量处理器,以及定制的高带宽纵横交叉开关和高速数据访问。其价格十分昂贵,因为其组件都需定制,一般适用于国家部门。

1.3.1.2 SMP

SMP也叫对称多处理机。其访存、IO都是对称的。其用的处理器大多数是商用处理器。

目前SMP需要解决的主要问题是Cache的一致性问题。多级高速缓存可以支持数据的局部性,而其一致性可由硬件来增强。大多数SMP系统都是基于总线连接的,占据了并行计算机市场中很大的份额。

1.3.1.3 MMP

MMP也叫大规模并行处理机(Massively Parallel Processor),其规模大,性能好。

1.3.1.4 DSM

DSM又叫分布式共享存储器(Distributed Shared Memory,DSM)。在DSM中,每个节点都有本地内存,所有的节点都有一个共享空间。

1.3.1.5 COW

COW又叫工作站机群(Cluster of Workstation)。工作站机群的结构技术起点比较低,可以自己将一些服务器/微型机通过以太网连起来,加上相应的管理和通讯软件来搭建自己的工作站机群。

在集群中,每个节点都有本地磁盘,除了没有显示器没有鼠标没有键盘之外,基本上其他普通计算机该有的它都有。每个节点用I/O总线连向专门设计的多级高速网络,如前面在标准互连网络提到的那些。

机群也是构建并行计算机一种很廉价的方案,其被称为穷人的解决方案。使用这类并行计算机跑并行程序效率很低,但是由于它的性价比和搭建的简便性,使得近几年常被用于做并行科学计算和并行商用计算。

需要注意的是,机群不适合用于国家级的计算,因为由上述可知,实际上机群可以理解为是很多廉价的机器并在一起,而如果要运行速度跟快,能处理的数据更多,就需要并一个很大的机群。而如果机群并得很大,就会导致散热有问题。我们前面说过它们通过总线互联的,你总不能一个计算机在东一个计算机在西,然后一条总线连着吧。肯定是统一放在一个地方啊。而如果要处理大型的数据,一般机群所处的机房就要三四层楼那么高,篮球场那么宽,肯定不利于散热。

1.3.1.6 小结

并行计算和Hadoop 并行计算架构与模式_并行计算机_12

实际上上面的介绍的几类并行计算机结构模型现在已经慢慢地趋近于三类:分布共享存储计算机分布存储多计算机共享存储多处理机。刚刚讲过的那几个结构模型如下图所示:

并行计算和Hadoop 并行计算架构与模式_并行计算机_13

1.3.2 并行计算机访存模型

1.3.2.1 UMA

UMA(Uniform Memory Access)模型是均匀存储访问模型的简称。其特点是:

  • 物理存储器被所有处理器均匀共享
  • 所有处理器访问任何存储字取相同的时间
  • 每台处理器可带私有高速缓存
  • 外围设备也可以一定形式共享

并行计算和Hadoop 并行计算架构与模式_并行计算机_14

1.3.2.2 NUMA

与UMA与之相对的是NUMA(Nonuniform Memory Access)模型。它是非均匀存储访问模型的简称。特点是:

  • 被共享的存储器在物理上是分布在所有的处理器中的,其所有本地存储器的集合就组成了全局地址空间
  • 处理器访问存储器的时间是不一样的;访问本地存储器LM或群内共享存储器CSM较快,而访问外地的存储器或全局共享存储器GSM较慢。
  • 每台处理器照例可带私有高速缓存,外设也可以某种形式共享
1.3.2.3 COMA

COMA(Cache_Only Memory Access)模型是全高速缓存访问的简称,其特点是:

  • 各处理器节点汇总没有存储层次结构,全部高速缓存组成了全局地址空间
  • 利用分布的高速缓存目录D进行远程高速缓存的访问
  • COMA中的高速缓存容量一般都大于2级高速缓存容量
  • 使用COMA时,数据开始可任意分配,因为在运行时它最终会被迁移到要用到它们的地方
1.3.2.4 CC-NUMA

CC-NUMA(Coherent-Cache Nonuniform Memory Access)模型是高速缓存一致性非均匀访问模型的简称。其特点是:

  • 大多数使用基于目录的高速缓存一致性协议
  • 保留SMP结构易于编程的优点,也改善常规SMP的可扩放性
  • CC-NUMA实际上是一个分布共享存储的DSM多处理机系统
  • 它最显著的优点是程序员无需明确地在节点上分配数据,系统的硬件和软件开始时自动在各节点分配数据,在运行期间,高速缓存一致性硬件会自动将数据迁移到它要用的地方。
1.3.2.5 NoRMA

NoRMA(No-Remote Memory Access)模型是非远程存储访问模型的简称。NORMA的特点是:

  • 所有存储器都是私有的
  • 绝大数NUMA都不支持远程存储器的访问
  • 在DSM中,NORMA就消失了

并行计算和Hadoop 并行计算架构与模式_高速缓存_15

1.3.2.6 小结

并行计算和Hadoop 并行计算架构与模式_并行计算机_16