并行计算基础知识
科学与工程计算对并行计算的需求是十 分广泛的,但所有的应用可概括为三个 方面: (1)计算密集型(Compute)计算密集型( Intensive) ) 这一类型的应用问题主要集中在大 型科学工程计算与数值模拟(气象预报、 地球物理勘探等)
12
1.1.4并行计算的应用分类
(2)数据密集型 (Data-Intensive) ) Internet的发展,为我们提供了大量的数 据资源,但有效地利用这些资源,需要进行大 量地处理,且对计算机的要求也相当高,这些 应用包括数字图书馆、数据仓库、数据挖掘、 计算可视化。 (3)网络密集型 (Network-Intensive) ) 通过网络进行远距离信息交互,来完成用 传统方法不同的一些应用问题。如协同工作、 遥控与远程医疗诊断等。
26
1.3.1 并行计算机体系结构的要素
互联网络是连接所有结点成并行机的高速网 络。对于一般的并行机使用者,无须知道互 联网络底层复杂的通信原理,而只需从拓扑 结构的角度了解互联网络。 互联网络的拓扑结构可用无向图表示。其中, 图中的结点唯一地代表并行机的各个结点, 图中的边表示在两个端点代表的并行机结点 之间,存在直接连接的物理通信通道。
1.1.2并行计算的研究内容
并行计算的研究内容广泛,包括并行计 算机系统结构、并行算法设计、并行编 程环境等,具体表现在下面几个方面: (1)并行计算机的设计 并行计算机的设计 包括本并行计算机的结构设计、互 联拓扑、网络通信等。设计并行计算机 重要的一点要考虑处理机数目的按比例 增长(即可扩展性)及支持快速通信及 处理机间的数据共享等。
20
1.2.1 并行计算机发展简述
80年代末到90年代初,共享存储器方式的大 规模并行计算机又获得了新的发展。IBM 将大 量早期RISC微处理器通过蝶形互连网络连结起 来。人们开始考虑如何才能在实现共享存储器 缓存一致的同时,使系统具有一定的可扩展性 (Scalability)。 90年代初期,斯坦福大学提出了DASH计划, 它通过维护一个保存有每一缓存块位置信息的 目录结构来实现分布式共享存储器的缓存一致 性。后来,IEEE在此基础上提出了缓存一致性 协议的标准。
10
1.1.3 并行计算的应用范围
并行计算在许多计算机应用领域都产生 了巨大的影响,使原来无法解决的应用 问题成为可能。 天气预报、卫星数据处理、石油数据处 理(连续优化问题),调度问题、平面 性问题及VLSI设计(离散优化问题)、 生物工程、医药研究、飞机制造、汽车 设计、环境保护等领域。
11
1.1.4并行计算的应用分类
15
1.2.1 并行计算机发展简述
并行计算机是由一组处理单元组成的,这组处 理单元通过相互之间的通信与协作,以更快的 速度共同完成一项大规模的计算任务。 因此,并行计算机的两个最主要的组成部分是 计算节点和节点间的通信与协作机制。 并行计算机体系结构的发展也主要体现在计算 节点性能的提高以及节点间通信技术的改进两 方面。
第一章 并行计算基要研究目标和内容 ● 1.1.1 并行计算的定义 ● 1.1.2 并行计算的研究内容 ● 1.1.3 并行计算的应用范围 ● 1.1.4 并行计算的应用分类 1.2 并行计算机发展历史 ● 1.2.1 并行计算机发展简述 1.3 并行计算机体系结构 ● 1.3.1 并行计算机体系结构的要素 ● 1.3.2 并行计算机的类型
16
1.2.1 并行计算机发展简述
60年代初期,由于晶体管以及磁芯存储 器的出现,处理单元变得越来越小,存 储器也更加小巧和廉价。这些技术发展 的结果导致了并行计算机的出现,这一 时期的并行计算机多是规模不大的共享 存储多处理器系统,即所谓大型主机( Mainframe)。IBM 360是这一时期的典 型代表。
2
1.1 并行计算的主要研究目标 和内容
1.1.1并行计算的定义
并行计算是指同时对多个任务或多条指令、或 并行计算 对多个数据项进行处理。完成此项处理的计算 机系统称为并行计算机系统,它是将多个处理 器(可以几个、几十个、几千个、几万个等) 通过网络连接以一定的方式有序地组织起来 (一定的连接方式涉及网络的互联拓扑、通信 协议等,而有序的组织则涉及操作系统、中间 件软件等)。 并行计算的主要目的: 一是为了提供比传统计算机快的计算速度; 二是解决传统计算机无法解决的问题。 4
13
1.2 并行计算机发展历史
1.2.1 并行计算机发展简述
40年代开始的现代计算机发展历程可以分为 两个明显的发展时代:串行计算时代、并行计 算时代。 每一个计算时代都从体系结构发展开始,接着 是系统软件(特别是编译器与操作系统)、应 用软件,最后随着问题求解环境的发展而达到 顶峰。创建和使用并行计算机的主要原因是因 为并行计算机是解决单处理器速度瓶颈的最好 方法之一。
17
1.2.1 并行计算机发展简述
到了60年代末期,同一个处理器开始设 置多个功能相同的功能单元,流水线技 术也出现了。 与单纯提高时钟频率相比,这些并行特 性在处理器内部的应用大大提高了并行 计算机系统的性能。
18
1.2.1 并行计算机发展简述
1972年,诞生了第一台并行计算机ILLIAC Ⅳ (Illinois Integrator and Automatic Computer) 伊利诺斯(理工学院) 积分仪和自动计算机。 它由Illinois 大学和Burrouphs公司合作研制成功的。 运算速度为1.5亿次/秒 (1.5*108次/秒) 由64台处理器组成的阵列机(Array Computer) 可对数组进行并行计算 它是当时性能最高的 CDC 7600 机器速度的2-6倍。
6
1.1.2并行计算的研究内容
(3)评价并行算法的方法 评价并行算法的方法 对于给定的并行计算机及运行在上面的并 行算法,需要评价运行性能。性能分析需解决 的问题:如何利用基于并行计算机及其相适应 的并行算法去快速地解决问题,及如何有效地 利用各个处理器。研究内容包括结合机器与算 法,提出相应的性能评测指标,为设计高效的 并行算法提供依据。
28
1.3.1 并行计算机体系结构的要素
互联网络评价:
大:结点度、点对点带宽、折半宽度、总通 信带宽; 小:网络直径、点对点延迟;
29
1.3.1 并行计算机体系结构的要素
按结点间连接的性质,拓扑结构可分为静态拓扑结 构、动态拓扑结构和宽带互联网络三类。 静态拓扑结构:结点之间存在固定的物理联接方式, 程序执行过程中,结点间的点对点联接关系不变。 动态拓扑结构:结点之间无固定的物理联接关系, 而是在联接路径的交叉点处用电子开关、路由器或 仲裁器等提供动态联接的特性,主要包含单一总线、 多层总线、交叉开关、多级互联网络。 宽带互联网络:当前,除了专用MPP 系统采用静态 的拓扑结构外,微机机群均采用宽带互联网络连接 各个计算结点。
21
1.2.1 并行计算机发展简述
90年代以来,主要的几种体系结构开始 走向融合。属于数据并行类型的CM-5除 大量采用商品化的微处理器以外,也允 许用户层的程序传递一些简单的消息; CRAY T3D是一台NUMA结构的共享存储 型并行计算机,但是它也提供了全局同 步机制、消息队列机制,并采取了一些 减少消息传递延迟的技术。
19
1.2.1 并行计算机发展简述
从80年代开始,微处理器技术一直在高速前进。稍后 又出现了非常适合于SMP 方式的总线协议,而伯克利 加州大学则对总线协议进行了扩展,提出了Cache一致 性问题的处理方案。从此,共享存储多处理器之路越 走越宽;现在,这种体系结构已经基本上统治了服务 器和桌面工作站市场。 同一时期,基于消息传递机制的并行计算机也开始不 断涌现。80年代中期,加州理工成功地将64个 i8086/i8087处理器通过超立方体互连结构连结起来。 此后,便先后出现了Intel iPSC系列、INMOS Transputer 系列、Intel Paragon 以及IBM SP 的前身 Vulcan等基于消息传递机制的并行计算机。
22
1.3 并行计算机体系结构
1.3.1 并行计算机体系结构的要素
结点(node):包含一个或多个CPU,这些 CPU通过HUB或全互联交叉开关相互联接, 并共享内存,也可以直接与外部进行I/O操作。
点通过互联网络相互连接相互通信。
互联网络(interconnect network):所有结 内存(memory):内存由多个存储模块组成,
这些模块可以与结点对称地分布在互联网络的两侧, 或者位于各个结点的内部。
24
1.3.1 并行计算机体系结构的要素
结点是构成并行机的最基本单位。一个结点包含2 个或2 个以上微处理器(CPU),并行程序执行时, 程序分派的各个进程将并行地运行在结点的各个微 处理器上。 每个微处理器拥有局部的二级高速缓存(L2 cache)。L2 cache 是现代高性能微处理器用于弥 补日益增长的CPU 执行速度和内存访问速度差距 (访存墙)而采取的关键部件。它按cache 映射策 略缓存内存访问的数据,同时为CPU 内部的一级 cache 提供计算数据。CPU 内部的一级cache为寄 存器提供数据,寄存器为逻辑运算部件提供数据。
9
1.1.2并行计算的研究内容
(6)并行程序的可移植性 并行程序的可移植性 可移植性为并行程序设计的主要问题, 要求在一台并行机上开发的程序不加修改或进 行少量修改即可在另一台计算机上运行。这一 点为目前受到了广泛关注的重要课题。 (7) 并行计算机的自动编程 可否设计一个并行化编译器,使用户的串 行程序通过并行化编译器编译,直接可在并行 机上运行。到目前为此,这种编译器还不存在, 而仅有一些半自动并行化编译器。
7
1.1.2并行计算的研究内容
(4)并行计算机语言 并行计算机语言 与传统的机器语言不同,并行计算 机语言依赖于并行计算机,并行计算机 语言必须简洁,编程容易,可以有效地 实现,目前的语言有:PVM、MPI、HPF 等,而且新的编程语言和编程模式正在 不断地出现。