文档介绍:计算机并行计算的基本问题及现状 0 引言工作中,我们总是希望我们自己工作得更有效率,用更少的时间解决更多的问题。在计算机里,这就是并行计算的基本初衷。全世界第一台计算机 ENIAC 中就己经出现了并行计算的概念。它有 20 个累加器,可以并发执行多个加减运算,可谓开并行计算的先河。在随后的 20 世纪五六十年代,由于晶体管和集成电器的发明,出现了更多更快的计算机。 IBM 是这一时期的主角, 同期计算机编程语言的出现, 由软件完成处理并行计算的思想进一步深化。但这一时期的计算还是大型机时代, 没有几个平民能用得起这些昂贵的东西。计算机和软件技术还锁在研究院和大学校园里。 20 世纪 70 年代,随着微电子技术的发展,出现了微型处理器(CPU) 接着,1974 年,全世界第一台个人电脑- 牛郎星顺利出炉。紧随其后, 看到市场前景的苹果和 IBM 推波助澜, 计算机开始进入个人时代。个人计算机同时又催生了软件业的高速发展, 软件又带动 CPU 不断升级换代。这为并行计算摆脱高端路线, 进入平民化时代打下了基础。 1 并行计算的基本问题 为什么需要并行计算在个人计算机诞生后的几十年里,程序员们编写了大量的应用软件, 这些软件决大部分了采用串行计算方法。所谓串行, 是指软件在 PC 上执行,在进入 CPU 前被分解为一个个指令,指令在 CPU 中一条条顺序执行。任一时间内, CPU 只能够运行一条指令。这种方式很符合我们对现实世界的思考习惯。至于软件的运行速度, 则依赖硬件的处理能力,尤其 CPU 的处理速度。这种思维方式到了 2005 年遇到了挑战。在那一年, 受限于制造 CPU 的半导体材料限制, 左右 CPU 发展的摩尔定律开始失效了。但芯片业很快找到了一个变通的办法: 在一块芯片中植入多个处理核心, 通过多核的共同运算, 提高运行速度。不幸的是,采用串行方法编写的软件面临着一个尴尬的局面:如果仍采用串行编程方式, 运行速度将停滞不前。这样, 原来需要 CPU 完成的提速工作, 被迫需要软件自己来完成。在另一个领域: 互联网, 由于网络数据极速膨胀, 数据量己经远远超过一台或者几台大型计算机的处理能力,需要更大数量的计算机协同完成。面对这些问题,主要的解决方案就是: 并行计算。 并行计算的涵义并行计算目前还是一门发展中的学科。并行计算是相对串行计算而言的, 并行计算可以分为时间上的并行计算和空间上的并行计算。时间上的并行计算就是流水线技术,即采用指令预取技术, 将每个指令分成多步, 各步间叠加操作, 当前指令完成前, 后一指令准备就绪,缩小指令执行的时钟周期。典型的以时间换空间。空间上的并行计算是指由多个处理单元( 不仅是 CPU) 执行的计算,是以空间换时间。空间上的并行计算分为两类: 单指令多数据流(SIMD) 和多指令多数据流(MIMD) SIM D 是流水技术的扩展, 可以在一个时钟周期处理多个指令, 我们目前使用的 PC 大多属于此列,例如 AMD 3DNOW 和 Intel MMX 。 MIMD 大致又分为 5类: 工作站集群(COW) 。对称多处理机(SMP) 。大规模并行处理机(MPP) 。分布共享存储处理机(DSM ), 并行向量机(PVP) 。空间并行计算技术包括数据并行计算和任务并行计算。数据并行计算是指将一个大的数据分解为多个小的数据, 分散到多个处理单元执行。任务并行是将大的任务分解为小的任务, 分散到多个处理单元执行, 任务并行同时还要避免任务重复执行, 协调数据的上下文关系, 避免冲突发生。任务并行计算与实际应用需求紧密相关。所以, 任务并行计算要比数据并行计算复杂得多。并行计算与串行计算的最大不同在于, 并行计算不仅要考虑计算本身, 还要考虑并行处理模型。网络通信。计算协作诸多问题。 主要的并行计算体系类型 工作站集群(COW Cluster of Workstation) 工作站集群可以理解为:PC+ 网络。它可以由少数几台 PC 扩展到数千个节点的大规模并行系统,既可以是廉价的并行程序调试环境, 也可以成为的高性能计算平台。集群由于低成本, 动态可扩充的特点,己经成为高性能计算平台的主流。目前 Google 搜索和云计算业务即采用这一方式。我国的联想深腾 XXXX, 曙光 XXXX 系列均属此类。 多处理系统(SMP Symmetric Multi Processing) 它由多个紧耦合多处理器组成, 最大特点就是共享全部资源。 大规模并行处理系统(MPP Massively Parallel Processing) 由许多松祸合处理单元( 不是处理器) 组成的。这种结构与 SMP 对立, 每个单元自成体系, 包括 CPU 。内存。硬