并行计算导论

并行计算介绍

推动并行化

计算能力因素 —— 从晶体管到浮点运算速度

  • 摩尔定律:芯片的晶体管数量每18个月增长一倍。

内存及磁盘速度的因素

  • 总体计算速度并非仅仅由处理器一个因素所决定,也取决于内存系统向处理器提供数据的能力。
  • DRAM:动态随机存取存储器
  • 处理器与动态随机存取存储器之间的净有效带宽也对持续计算速度产生影响。
  • 内存系统的总体性能是由高速缓存能够满足总内存需求的部分决定的

数据通信因素

并行计算适用范围

在工业及设计中的应用

  • 机翼设计
  • 内燃机设计
  • 高速电路设计
  • 结构设计

科学计算中的应用

  • 一些最新的并行计算技术专门针对生物信息学方面的应用而发展的
  • 计算物理/化学, 强调对尺度从量子现象到大分子结构之间变化过程的理解
  • 天体物理, 银河系的演化过程及热核反应
  • 气象模型、矿物勘探、洪水预测等

商业应用

  • 超级计算机

计算机系统中的应用

并行编程平台

传统意义上的串行计算机是由经数据通道连接到处理器的内存所组成的,处理器、内存及数据通道 形成计算机系统总体处理速度的瓶颈。 → \rightarrow 多处理器、多数据通道、多内存单元。

隐式并行:微处理器系统结构的发展趋势

流水线与超标量执行

  • 为了提高单个流水线的速度,可以将任务分成更小的单元,这样就能使流水线变长,增加执行时的重叠时间(overlap)
  • 超标量执行的相关性:
    • 程序中的指令很可能彼此相关:真实数据相关性(true data dependency)
    • 多个流水线分享有限的资源:资源相关性(resource dependency)
    • 控制流程造成指令间的相关性:分支相关性(branch dependency)/ 过程相关性(procedural dependency)
  • 超标量体系结构的性能受到可用指令级并行性的限制:
    • 垂直浪费(vertical waste):一个周期中执行部件没有指令发送
    • 水平浪费:一个周期周只用到部分执行部件
    • 例:如果总共8个可用周期中只有3个用于计算,这就意味着代码段的运算速度不会超过处理器峰值浮点运算速度的3/8

超长指令字(VLIW)处理器

  • 由超标量处理器抽出的并行性通常收到指令预测的限制,在常规处理器中,用于动态相关性分析的硬件逻辑一半占总逻辑的5% - 10%, 复杂度大约以发送指令数的二次方增长,导致瓶颈。
  • 超长指令字把能够并发执行的指令并入到一个组里,作为一个超长指令字。

内存系统性能的局限

  • 内存系统可能由多级缓存构成,当它收到一条内存字请求,在l纳秒的延迟后,会返回大小为b的包含请求字的数据块。l称为内存的延迟(latency),数据从内存送到处理器的速度决定了内存系统的带宽(bandwidth)

E.g. 内存延迟对性能的影响
考虑某一处理器以1 GHz (1纳秒时钟)运行,与之相连的DRAM(动态随机存取存储器)有100纳秒的延迟。假设处理器有2个乘法-加法部件,在每个1纳秒的周期内能执行四条指令。这样处理器的峰值速度就使4 GFLOPS。由于内存延迟时间等于100个周期,并且块大小为1个字,每次发送内存请求时,处理器在处理数据前必须等待100个周期。
考虑计算向量点积,每一次浮点运算都要取一次数据。最大速度为100MFLOPS (100纳秒1次)。

使用高速缓存改善有效内存延迟

  • 高速缓存:低延迟高带宽的存储器。由高速缓存提供的数据份额称为高速缓存命中率(hit ratio)
  • 许多应用程序有效的运算速度不仅仅受CPU处理速度的限制,还受能送到CPU的数据传送速度的限制 → \rightarrow 内存首先(memory bound)。
  • 高速缓存命中率严重影响受内存首先程序的性能。
    E.g. 继上个例子
    加入一个32KB 和延迟时间为1纳秒的高速缓存。进行3232的矩阵A和B相乘。将两个矩阵取到高速缓存中等同于2K字(23232),200微秒。两个nn的矩阵相乘需要进行2n^3次运算(nn(2n)),64K操作。每个周期执行4条指令,需要16K周期。总时间大概是216微秒。是前一个例子的30倍。
  • 在一段段的时间间隔内重复引用数据项的概念称为引用的时间本地性(temporal locality)

内存带宽的影响

  • 数据在内存与处理器间传送的速度。
  • 假设某一内存请求返回4个字的连续块,这种4个字的单一单元也称为高速缓存行(cache line)
  • 在上上例中,如果把块大小增加到4个字,两次访问能取出每个向量中的4个元素,最大速度变成40MFLOPS。
  • 内存中连续的数据字被连续的指令使用,如果以计算为中心,那么就有内存访问的空间本地性(spatial locality)。如果计算不具有空间本地性,那么有效带宽就会比最大带宽小得多。

躲避内存延迟的其他方法

  • 预取(prefetching): 预测要浏览的网页,并提前发送请求
  • 多线程(multithreading):打开多个浏览器,每个浏览器访问不同的网页
  • 一次访问多个页面,在多个访问中分摊延迟。

并行计算平台剖析

并行平台的控制结构

并行计算的处理器可以在单一控制部件的集中控制下运行,也可以独立运行。

  • 单指令流多数据流(single instruction strem, multiple data stream, SIMD)单一控制部件向每个处理部件分派指令。同样的指令被所有的处理部件同时执行。
  • 多指令流多数据流(multiple instruction stream, multiple data stream, MIMD),用同一程序的多个实例在不同数据上执行。

并行平台的通信模型

并行任务间有两种主要的数据交换方式:访问共享数据空间以及交换消息。

  1. 共享地址空间平台:支持SPMD编程的共享地址空间平台也称为多处理器(multiprocessor),如果处理器访问系统中任何内存字(全局或本地)的时间都相同,平台就归类为一致内存访问(uniform memory access,UMA)。
  2. 消息传递平台:从计算机逻辑观点上说,消息传递平台由p个处理节点构成,每个节点都有自己的独立地址空间。运行在不同节点上的进程之间的交互必须用消息来完成,消息传递(message passing)

并行平台的物理组织

理想并行计算机的体系结构

串行计算模型(随机访问计算机或RAM)的一种自然扩展包含p个处理器以及大小不受限制的全局内存,所有处理器同样可以访问该内存。所有处理器访问同样的地址空间,共享一个公用的时钟,但在每个周期内可以执行不同指令。并行随机访问计算机(parallel random access machine, PRAM)

并行计算机互连网络

  • 互连网络提供多个处理节点之间或处理器与内存模块之间的数据传输的机制。互连网络氛围静态和动态两种。动态网络也称为非直接网络,其节点通过开关网络与其他节点相连。

网络拓扑结构

  • 基于总线的网络包含一个所有节点公用的共享介质。总线的成本与节点数目p是线性关系。网络中任意两个节点间的距离是常数(O(1))。对于一般程序来说,大多数访问的数据对节点是本地的,对于这样的程序,可以为每个节点提供高速缓存,似有数据存放在节点的高速缓存中,只有远程数据才通过总线存取。
  • 交叉开关网络:一种非拥塞网络,连接一个处理节点与存储区不会拥塞其他任何处理节点与存储区之间的连接。要实现这样的网络,需要的开关节点总数为 θ ( p b ) \theta(pb) θ(pb),从成本的角度上讲,交叉开关网络的可扩展性不好。
  • 多级网络:(multistage interconnection network),比总线网络在性能方面的可扩展性强,又比交叉开关网络在成本上可扩展性强。omega网络是一种常用的多级互连网络,级数为logp,p是输入的数目,也是输出的数目。网络成本随 θ ( p l o g p ) \theta(plogp) θ(plogp)增加。在omega网络中,某一处理器对某一存储区的访问可能不允许其他处理器对其他存储区的访问,具有这种性质的网络称为阻塞网络(blocki network)
  • 全连接网络:(completely-connected network),每个节点到其他所有节点都存在直接通信链路。全连接网络是交叉开关网络的静态对应网络,因为在这两种网络中,任意输入/输出对之间的通信都不会阻塞其他任何对之间的通信。
  • 星型连接网络:某一处理器作为中央处理器,其他的每个处理器有一条通信链路与中央处理器相连。中央处理器是星型结构的瓶颈。
  • 线性阵列、格网和k-d格网:k-d格网是一种拓扑结构,它有d维,每一维上有k个节点。一般而言,d维超立方体由连接两个(d-1)维超立方体的相应节点构成。
  • 基于树的网络:(tree network),是指网络中任意一对节点间只存在一条通路的网络。线性阵列和星型连接网络都是树网络的特例。

静态互联网络评价

  • 直径:网络中任意两个处理节点之间的最长距离称为网络直径(diameter)
  • 连通性:(connectivity),连通性的一个度量是将一个网络分为两个不连通的网络需要删去的最少弧数目。
  • 对分宽度及对分带宽:(bisection width),是把网络分为两个相等网络时必须删去的最小通信链路数目。

动态互连网络评价

多处理器系统中的高速缓存一致性

  • 无效协议(invalidate)和更新协议(update),在变量的n个副本中,当处理器修改变量的一个副本时,要么必须使其他的副本无效,要么必须使其他的副本更新。
  • 假共享:(false sharing)不同的处理器更新相同高速缓存行中不同部分的情况。

并行计算机的通信成本

决定通信延迟的主要参数有:

  1. 启动时间:在发送节点和接受节点处理消息所花费的时间
  2. 每站时间:当消息离开一个节点后,需要花一定的时间到达路径上的下一个节点。消息头在两个直接连接的节点间传递所花费的时间称为每站时间,也称为节点延迟(node latency)
  3. 每字传送时间
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书系统介绍涉及并行计算的体系结构、编程范例、算法与应用和标准等。覆盖了并行计算领域的传统问题,并且尽可能地采用与底层平台无关的体系结构和针对抽象模型来设计算法。书中选择MPI(Message Passing Interface)、POSIX线程和OpenMP这三个应用最广泛的编写可移植并行程序的标准作为编程模型,并在不同例子中反映了并行计算的不断变化的应用组合。本书结构合理,可读性强,加之每章精心设计的习题集,更加适合教学。 本书论述清晰,示例生动,并附有大量习题,适合作为高等院校计算机及相关专业本科生和研究生的教材或参考书。原版自1993年出版第1版到2003年出版第2版以来,已在世界范围内被广泛地采用为高等院校本科生和研究生的教材或参考书。 第1章 并行计算介绍 1.1 推动并行化 1.1.1 计算能力因素——从晶体管到浮点运算速度 1.1.2 内存及磁盘速度的因素 1.1.3 数据通信因素 1.2 并行计算适用范围 1.2.1 在工程及设计中的应用 1.2.2 科学计算中的应用 1.2.3 商业应用 1.2.4 计算机系统中的应用 1.3 本书的组织及内容 1.4 书目评注 习题 第2章 并行编程平台 2.1 隐式并行:微处理器体系结构的发展趋势 2.1.1 流水线与超标量执行 2.1.2 超长指令字处理器 2.2 内存系统性能的局限 2.2.1 使用高速缓存改善有效内存延迟 2.2.2 内存带宽的影响 2.2.3 躲避内存延迟的其他方法 2.2.4 多线程与预取间的权衡 2.3 并行计算平台剖析 2.3.1 并行平台的控制结构 2.3.2 并行平台的通信模型 2.4 并行平台的物理组织 2.4.1 理想并行计算机的体系结构 2.4.2 并行计算机互连网络 2.4.3 网络拓扑结构 2.4.4 静态互连网络评价 2.4.5 动态互连网络评价 2.4.6 多处理器系统中的高速缓存一致性 2.5 并行计算机的通信成本 2.5.1 并行计算机的消息传递成本 2.5.2 共享地址空间计算机的通信成本 2.6 互连网络的路由选择机制 2.7 进程-处理器映射的影响和映射技术 2.7.1 图的映射技术 2.7.2 成本-性能平衡 2.8 书目评注 习题 第3章 并行算法设计原则 3.1 预备知识 3.1.1 分解、任务与依赖图 3.1.2 粒度、并发性与任务交互 3.1.3 进程和映射 3.1.4 进程与处理器 3.2 分解技术 3.2.1 递归分解 3.2.2 数据分解 3.2.3 探测性分解 3.2.4 推测性分解 3.2.5 混合分解 3.3 任务和交互的特点 3.3.1 任务特性 3.3.2 任务间交互的特征 3.4 负载平衡的映射技术 3.4.1 静态映射方案 3.4.2 动态映射方案 3.5 包含交互开销的方法 3.5.1 最大化数据本地性 3.5.2 最小化争用与热点 3.5.3 使计算与交互重叠 3.5.4 复制数据或计算 3.5.5 使用最优聚合交互操作 3.5.6 一些交互与另一些交互的重叠 3.6 并行算法模型 3.6.1 数据并行模型 3.6.2 任务图模型 3.6.3 工作池模型 3.6.4 主-从模型 3.6.5 流水线模型或生产者-消费者模型 3.6.6 混合模型 3.7 书目评注 习题 第4章 基本通信操作 4.1 一对多广播以及多对一归约 4.1.1 环或线性阵列 4.1.2 格网 4.1.3 超立方体 4.1.4 平衡二叉树 4.1.5 算法细节 4.1.6 成本分析 4.2 多对多广播和归约 4.2.1 线性阵列和环 4.2.2 格网 4.2.3 超立方体 4.2.4 成本分析 4.3 全归约与前缀和操作 4.4 散发和收集 4.5 多对多私自通信 4.5.1 环 4.5.2 格网 4.5.3 超立方体 4.6 循环移位 4.6.1 格网 4.6.2 超立方体 4.7 提高某些通信操作的速度 4.7.1 消息分裂和路由选择 4.7.2 全端口通信 4.8 小结 4.9 书目评注 习题 第5章 并行程序的解析建模 5.1 并行程序中的开销来源 5.2 并行系统的性能度量 5.2.1 执行时间 5.2.2 总并行开销 5.2.3 加速比 5.2.4 效率 5.2.5 成本 5.3 粒度对性能的影响 5.4 并行系统的可扩展性 5.4.1 并行程序的扩展特性 5.4.2 可扩展性的等效率度量 5.4.3 成本最优性和等效率函数 5.4.4 等效率函数的下界 5.4.5 并发度和等效率函数 5.5 最小执行时间和最小成本最优执行时间 5.6 并行程序渐近分析 5.7 其他可扩展性的度量 5.8 书目评注 习题 第6章 使用消息传递模式编程 6.1 消息传递编程的原理 6.2 操作构件:发送和接收操作 6.2.1 阻塞式消息传递操作 6.2.2 无阻塞式消息传递操作 6.3 MPI:消息传递接口 6.3.1 启动和终止MPI库 6.3.2 通信器 6.3.3 获取信息 6.3.4 发送和接收消息 6.3.5 实例:奇偶排序 6.4 拓扑结构与嵌入 6.4.1 创建和使用笛卡儿拓扑结构 6.4.2 实例:Cannon的矩阵与矩阵相乘 6.5 计算与通信重叠 6.6 聚合的通信和计算操作 6.6.1 障碍 6.6.2 广播 6.6.3 归约 6.6.4 前缀 6.6.5 收集 6.6.6 散发 6.6.7 多对多 6.6.8 实例:一维矩阵与向量相乘 6.6.9 实例:单源最短路径 6.6.10 实例:样本排序 6.7 进程组和通信器 6.8 书目评注 习题 第7章 共享地址空间平台的编程 7.1 线程基础 7.2 为什么要用线程 7.3 POSIX线程API 7.4 线程基础:创建和终止 7.5 Pthreads中的同步原语 7.5.1 共享变量的互斥 7.5.2 用于同步的条件变量 7.6 控制线程及同步的属性 7.6.1 线程的属性对象 7.6.2 互斥锁的属性对象 7.7 线程注销 7.8 复合同步结构 7.8.1 读-写锁 7.8.2 障碍 7.9 设计异步程序的技巧 7.10 OpenMP:基于命令的并行编程标准 7.10.1 OpenMP编程模型 7.10.2 在OpenMP中指定并发任务 7.10.3 OpenMP中的同步结构 7.10.4 OpenMP中的数据处理 7.10.5 OpenMP库函数 7.10.6 OpenMP中的环境变量 7.10.7 显式线程与基于OpenMP编程的比较 7.11 书目评注 习题 第8章 稠密矩阵算法 8.1 矩阵向量乘法 8.1.1 一维行划分 8.1.2 二维划分 8.2 矩阵与矩阵的乘法 8.2.1 简单的并行算法 8.2.2 Cannon算法 8.2.3 DNS算法 8.3 线性方程组求解 8.3.1 简单高斯消元算法 8.3.2 带部分主元选择的高斯消元算法 8.3.3 求解三角系统:回代法 8.3.4 求解线性方程组时的数值因素 8.4 书目评注 习题 第9章 排序 9.1 并行计算机中的排序问题 9.1.1 输入输出序列的存放位置 9.1.2 如何进行比较 9.2 排序网络 9.2.1 双调排序 9.2.2 将双调排序映射到超立方体和格网 9.3 冒泡排序及其变体 9.3.1 奇偶转换 9.3.2 希尔排序 9.4 快速排序 9.4.1 并行快速排序 9.4.2 用于CRCWPRAM的并行形式 9.4.3 用于实际体系结构的并行形式 9.4.4 主元选择 9.5 桶和样本排序 9.6 其他排序算法 9.6.1 枚举排序 9.6.2 基数排序 9.7 书目评注 习题 第10章 图算法 10.1 定义和表示 10.2 最小生成树:Prim算法 10.3 单源最短路径:Dijkstra算法 10.4 全部顶点对间的最短路径 10.4.1 Dijkstra算法 10.4.2 Floyd算法 10.4.3 性能比较 10.5 传递闭包 10.6 连通分量 10.7 稀疏图算法 10.7.1 查找最大独立集 10.7.2 单源最短路径 10.8 书目评注 习题 第11章 离散优化问题的搜索算法 11.1 定义与实例 11.2 顺序搜索算法 11.2.1 深度优先搜索算法 11.2.2 最佳优先搜索算法 11.3 搜索开销因子 11.4 并行深度优先搜索 11.4.1 并行DFS的重要参数 11.4.2 并行DFS分析的一般框架 11.4.3 负载平衡方案分析 11.4.4 终止检测 11.4.5 试验结果 11.4.6 深度优先分支定界搜索的并行形式 11.4.7 IDA*的并行形式 11.5 并行最佳优先搜索 11.6 并行搜索算法的加速比异常 11.7 书目评注 习题 第12章 动态规划 12.1 动态规划概述 12.2 串行一元DP形式 12.2.1 最短路径问题 12.2.2 0/1背包问题 12.3 非串行一元DP形式 12.4 串行多元DP形式 12.5 非串行多元DP形式 12.6 综述与讨论 12.7 书目评注 习题 第13章 快速傅里叶变换 13.1 串行算法 13.2 二进制交换算法 13.2.1 全带宽网络 13.2.2 有限带宽网络 13.2.3 并行快速傅里叶变换中的额外计算 13.3 转置算法 13.3.1 二维转置算法 13.3.2 转置算法的推广 13.4 书目评注 习题 附录A 函数的复杂度与阶次分析 索引
### 回答1: "并行计算导论"是由Ananth Grama等人合著的一本计算机科学教材,旨在介绍并行计算的基本概念和技术。 这本书首先概述了串行计算的局限性,引出了为什么我们需要并行计算。随后,书中详细介绍了并行计算的基本概念,如任务并行和数据并行,以及相应的并行计算模型,如共享内存模型和分布式内存模型。这些内容不仅帮助读者理解并行计算的核心原理,还为读者提供了分析和设计并行计算算法的方法。 "并行计算导论"还对并行计算的基础工具进行了介绍,包括并行编程语言如OpenMP和MPI,以及并行计算的调度和负载平衡技术。此外,书中还介绍了并行计算应用领域的具体案例,如图像处理、科学计算和数据挖掘等,帮助读者了解并行计算在实际问题中的应用和优势。 通过阅读这本书,读者不仅可以深入了解并行计算的基本理论,还能了解如何实际应用并行计算解决实际问题。同时,书中提供了大量的练习题和案例研究,帮助读者巩固所学知识,提高并行计算的应用能力。 总之,“并行计算导论”是一本全面介绍并行计算的教材,适用于希望了解并行计算基本概念和应用技术的读者。通过阅读这本教材,读者可以掌握并行计算的核心原理和应用方法,为进一步深入研究并行计算打下坚实的基础。 ### 回答2: 并行计算导论是由Ananth Grama等人编写的一本计算机科学教材,旨在介绍并行计算的基本概念、技术和应用。该书的内容涵盖了多处理器、并行算法、并行计算体系结构、并行程序设计以及并行性能分析等方面。 该教材首先介绍了并行计算的基本概念和核心原理。它解释了并行计算与串行计算的区别,讲述了并行计算的工作方式和优势。随后,教材就多处理器体系结构进行了详细说明,包括共享内存、分布式内存和虚拟存储器等不同类型的体系结构。它介绍了这些体系结构的原理、特点以及适用的应用场景。 教材还讲解了并行算法的设计和分析方法。它介绍了一些经典的并行算法,如并行排序、并行搜索和并行图算法等。同时,教材也讨论了算法设计中需要考虑的问题,如负载均衡、同步和通信开销等。这些内容有助于读者理解并行算法的设计原则和实现技巧。 此外,教材还详细介绍了并行程序设计的方法和工具。它讲解了并行程序设计语言(如MPI和OpenMP)、并行程序调试和测试、以及并行程序优化等方面的知识。这些内容能够帮助读者掌握并行程序设计的技巧,提高程序的性能和效率。 最后,教材还介绍了并行性能分析的方法和指标。它说明了性能评测的重要性,讲解了各种性能指标的含义和计算方法。通过这些内容,读者可以了解并行程序的性能瓶颈,并采取相应的优化措施。 总之,"并行计算导论"是一本系统介绍并行计算原理和实践的教材。它深入浅出地解释了并行计算的基本概念和关键技术,并提供了丰富的案例和实例,帮助读者更好地理解和应用并行计算。 ### 回答3: 《并行计算导论》(Ananth Grama)是一本介绍并行计算导论教材。该书由Ananth Grama、Anshul Gupta、George Karypis和Vipin Kumar合著,共分为10章,涵盖了并行计算的基本概念、并行算法设计和实施、并行计算架构和并行程序设计等内容。 该书首先介绍了并行计算的基本概念和并行计算体系结构。其次,书中详细解释了并行算法的设计和分析方法,包括分治法、贪心法和动态规划等。同时,还介绍了并行计算的重要性能度量指标,如执行时间、加速比和效率等。 《并行计算导论》还提供了大量关于并行计算架构和系统的详细解释。例如,讨论了多处理器体系结构、共享内存体系结构和分布式内存体系结构的特点和设计原则。此外,书中还介绍了常见的并行程序设计模型和编程语言,如MPI、OpenMP和CUDA等。 该书的最后一章还介绍了一些现代并行计算领域的研究方向和挑战,如大规模并行计算、云计算和GPU计算等。此外,书中还附有大量的案例研究和习题,方便读者深入学习和实践。 总之,《并行计算导论》(Ananth Grama)是一本系统全面介绍并行计算导论教材,适合作为计算机科学、并行计算和高性能计算等相关专业的教材和参考书。它的内容丰富、结构清晰,能够帮助读者深入理解并行计算的基本概念和技术,并掌握相关的算法设计和程序开发技巧。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值