Parallel Programming系列为本学期(2020春季)并行程序设计课程笔记整理~
1.并行程序设计 paralell programming:将整个的问题求解划分成若干部分,然后每个部分各由一个处理器并行地计算。
并行计算机 parallel computer:专门设计的、含有多个处理器的计算机系统或者以某种方式互联的若干独立的计算机。
2.加速系数 speedup factor
:使用单处理器系统执行时间(最好的算法)/计算步数
:使用具有p个处理器的多处理机的执行所需的时间/计算步数
:线性加速(linear speedup) 可能获得的最大加速比为p
:超线性加速比(superlinear speedup)-->使用的是次优化算法、算法的不确定性、有利于并行构造的独特体系结构特性、多处理机中有额外的存储器
3.效率efficiency : 处理器在多长时间内用于有用的计算
:处理器个数
4.阿姆达尔定律 Amdahl's law
串行部分所占的比例为f、处理器个数为p:
:即使使用无限多个处理器,最大的加速比仍被限制在1/f
5.Gustafson定律
假设:并行执行时间tp是常数=1
必须顺序执行的部分fts也是常数
顺序执行的时间:
并行执行的时间:
6.消息传递计算
- 在进程间传送消息是为了传递数据和进行同步
- 并行计算的时间=通信时间+计算时间:
- 计算/通信比=计算时间/通信时间:
7.并行计算机(parallel computer)的类型
一台并行计算机:一台具有多个内部处理器的单计算机或者多个互联的计算机构成的一个一体的高性能计算平台
(1)共享存储器多处理机
- 模型
- 使用单一编址空间(signle address space):主存储器系统的每一个单元有一个唯一的地址
- 每个处理器提供一个自己本地的高速缓存
- 编程
- 使用高级并行程序设计语言
- 使用规则的顺序编程语言,编译器从“源代码”生成并行代码-->受欢迎的方法 eg:OpenMP
- 线程
- 修改规则顺序编程语言的语法说明并行性 eg:UPC(Unified Parallel C)
(2)消息传递多计算机
- 通过互联网络连接多台完整的计算机构成:每台计算机由处理器和本地主存储器组成,互联网络提供处理器间传递消息。
- 网络设计的问题:带宽(bandwidth)、时延(latency)、成本(cost)、直径(diameter)、对分宽度(bisenction width)
- 互联网络的类型:
网格(mesh):
超立方体(hypercube):
- 如果超立方体有p个结点,网络直径为
- 存在有最小距离的无死锁路由算法
纵横交叉转换器:
树状网-->二叉树(binary tree):
多级互联网 (multistage interconnection network,MIN):
- 含有多种配置的具有相同特征的多级交换器
- 互联网络的通信:将信息从源结点路由到目的结点
- 电路交换circuit switching:源结点和目的结点之间建立通路,维持消息途径的所有链路的畅通
- 包交换packet switching:消息被分成多个“包”,进行存储转发(store-and-forward),当前的包被转发后,链路可以由其他包使用
- 空虫wormhole:消息被分成比包更小的单位-->片,结点之间使用请求/确认系统,不容许其他消息包与当前消息片交叉占用链路
- 消息传递多计算机的缺点:
- 需要程序员在代码中使用显式的消息传递调用-->易出错,难调试
- 数据不能共享 必须拷贝
- 消息传递多计算的优点:
- 不需要专门的同步机制以控制对数据的同时访问
(3)分布式共享存储器
- 存储器物理地分布在每个处理器中,但每个处理器使用单一的存储器地址空间对整个存储器进行访问
- 当一个处理器要访问的单元不在本地存储器中时,必须使用消息传递方法进行数据的传递
- 实现方法:使用共享虚拟存储器shared virtual memory:在联网的计算机上实现,将虚拟存储器管理系统扩展,使得分布在不同计算机上的存储器感觉上是全局共享存储器
8.计算机分类
- 单指令流单数据流计算机(single instruction stream-single data stream,SISD)
- 在单处理机计算机中:程序生成一个指令流,对数据项进行运算
- 多指令流多数据流计算机(multiple instruction stream-multiple data stream,MIMD)
- 多处理机系统中:每个程序为每个处理器生成一个指令流,每条指令对不同的数据进行操作
- 共享存储器、消息传递多处理机都属于MIMD
- 单指令流多数据流计算机(single instrction stream-multiple data stream,SIMD)
- 单一控制器从存储器取指令、发送到各个处理器,每个处理器同步执行相同指令,处理不同的数据
- 数据项-->阵列,在一个指令周期内对整个阵列进行运算
- 为特殊应用专门设计的计算机:物理系统的计算模拟、低层图像处理等
- 多指令流单数据流计算机(multiple instruction stream-single data stream,MISD)
9.机群
- 工作站机群/网络 cluster/network of workstations
- 20世纪80年代后和90年代初
- 使用互联的工作站和PC机构成一个强大的计算平台
- 软件工具:并行虚拟机PVM、消息传递接口MPI
- 机群 cluster
- 20世纪90年代
- 联网计算机通信——以太网
- 机群的配置:
- 使用现有联网计算机:
- 使用专用的计算机机群:
- Beowulf机群
- 代表任何使用商品互联网和易获得软件、旨在构成一个经济有效的计算机平台的低廉的计算机机群
- 使用快速以太网
- 使用多个并行的互联网以减少通信开销
- 配置
- 硬件配置:
- 软件配置:操作系统、文件服务器、消息传递软件、机群管理工具、并行应用程序
- 硬件配置:
- 使用现有联网计算机: