没有合适的资源?快使用搜索试试~ 我知道了~
1. 什么是并行计算(P14) 2. 并行计算的优势:(P18) 3. 并行计算的主要用途(P22-24) 4. 并行计算的主要推动力 5. 并行计算的粒度 6
资源详情
资源评论
资源推荐
并行复习要点
By Shelly Tang 2020/8/17~2020/9/3
CH1:并行计算概览
1. 什么是并行计算(P14)
并行计算可以简单定义为同时利用多个计算资源解决一个计算问题程序运行在多个CPU上;
一个问题被分解成离散可并发解决的小部分;
每一小部分被进一步分解成一组指令序列;
每一部分的指令在不同的CPU上同时执行;
需要一个全局的控制和协调机制;
2. 并行计算的优势:(P18)
(1)节省时间和花费
① 理论上,给一个任务投入更多的资源将缩短任务的完成时间,减少潜在的代价
② 并行计算机可以由多个便宜、通用计算资源构成;
(2)解决更大、更复杂问题
很多问题很复杂,不实际也不可能在单台计算机上解决
(3)实现并发处理
① 单台计算机只能做一件事情,而多台计算机却可以同时做几件事情;
② 例如协作网络,来自世界各地的人可以同时工作;
(4)利用非本地资源
当本地计算资源稀缺或者不充足时,可以利用甚至是来自互联网的计算资源。
(5)更好的发挥底层并行硬件
1).现代计算机甚至笔记本都具有多个处理器或者核心;
2).并行软件就是为了针对并行硬件架构出现的;
3).串行程序运行在现代计算机上会浪费计算资源;
3. 并行计算的主要用途(P22-24)
科学和工程计算、工业和商业应用、全球范围的应用
4. 并行计算的主要推动力
(1)应用发展趋势
在硬件可达到的性能与应用对性能的需求之间存在正反馈(P26)
大量设备、用户、内容涌现(P27)
大数据(P28)
云计算的兴起;廉价的硬件,应用弹性的扩展;应用种类繁多,负载异构性增加;(P30)
(2)架构发展趋势
大规模集成电路(VLSI)(P31)
VLSI最的特色是在于对并行化的利用,不同的VLSI时代具有不同的并行粒度:bit并行-> 指令
水平的并行 -> 线程水平的并行(P31-32)
Moore定律(P36-39)
CPU主频增长越来越缓慢,Moore定律会失效:发展趋势不再是高速的CPU主频,而是“多核”
如何提高CPU的处理速度(P39)
未来属于异构、多核的SOC架构,SOC = System On Chip
Moore’s law新解(P55)
5. 并行计算的粒度
函数级并行、线程级并行还是进程级并行
6. 并行计算的难点(P63)
(1)找到尽可能多的并行点(Amdahl’s Law)
(2)粒度:函数级并行、线程级并行还是进程级并行
(3)局部性:并行化后是否能够利用局部数据等
(4)负载均衡:不同线程、不同core之间的敷在分布
(5)协作与同步
(6)性能模型
7. Amdahl’s law
Speedup加速比 = 1线程执行时间/n线程执行时间
= 1/ [(1-p) + p/n] , p为并行的分数
CH2:并行架构
1. Flynn’s 并行架构分类(P10)
SISD:单指令单数据流(顺序执行)(P11)
MISD:多指令单数据流(e.g. OpenMP)(P13)
SIMD:单指令多数据流(e.g. CUDA/AVX 向量计算)(P12)
MIMD:多指令多数据流(多节点并行计算)
2. 什么是pipeline?
流水线(P19):洗衣服
overlapping individual parts of instructions重叠指令的各个部分(P17)
limits (P22), 数据冒险(P23)
3. 有哪些形式的指令级并行?(P17)
流水线pipelining:重叠指令的各个部分
超标量执行superscalar execution:同一时间做多个事情
超长指令级架构VLIW:让编译器指定哪些操作可以并行运行
向量处理Vector processing:指定类似(独立)的操作组
乱序执行OOO:允许长操作的发生(即可提前结束,不用等)(P24)
现代ILP:动态规划,乱序执行(P25-26)
4. 什么是 Pthreads?(P46)
the POSIX线程接口
系统调用以创建和同步线程
在类似UNIX的OS平台上应该相对统一
Pthreads支持:创建并行、同步、(隐式支持)通信(只是堆适用、栈不适用)
#补充:
线程调度(P50)
多线程执行(P51):硬件多线程
结合ILP&TLP:面向ILP的处理器能否从利用TLP中受益?(P52)
由于停顿或代码依赖性,功能单元通常在为ILP设计的数据路径中处于空闲状态
TLP用作独立指令的来源,可能使处理器在停顿期间保持繁忙
TLP用于占用功能单元,否则当没有足够的ILP时它们将处于空闲状态
这叫做“同时多线程”,或者intel中的超线程
线程数增多,则计算部件的利用率增大。(但冲突也会增多)(P54)
5. 内存局部性原则有哪些?(P58)
时间局部性temporal locality:如果引用了某个项目,则往往会很快再次引用该项目(例如,循
环,重用)
空间局部性spatial locality:如果引用了某个项目,则地址附近的那些项目往往会很快被引用(例
如,直线代码,数组访问)
#补充:评价内存系统性能的指标:(P56)
延迟latency:指从发出内存请求到处理器中数据可用的时间。
带宽bandwidth:存储系统将数据送到处理器的速率。
6. 内存分层?(P60,61)
分了这些层:寄存器、高速缓存、主存、固态存储器、备份硬盘存储器
随着与CPU的距离越来越大(存储器的层次结构从上到下),速度越来越小,存储容量越来越大,
价格越来越低廉,访问频率递减(局部性原理)。
7. Caches 在内存分层结构中的重要作用(P66)
高速缓存是处理器与DRAM之间的小型快速存储元素。
充当低延迟高带宽的存储。
如果重复使用一条数据,则可以通过cache减少此存储系统的有效延迟。
高速缓存满足的数据引用比例称为高速缓存命中率。
存储系统上的代码所达到的高速缓存命中率通常决定其性能。
注:cache计算例题(P67)
8. 新型存储系统的构成?
磁盘&内存相结合(P73)
存储类型内存 Storage Class Memory(SCC)
在DRAM基础上,增加了MRAM,FeRAM,PCM等部件进行优化,使得获取数据的时间减少。
(P77)
9. 什么是并行架构?(P87)
并行计算机是处理元素的集合,这些元素可以协作快速解决大型问题。
资源分配:
集合多大?元素有多强大?内存需要多少?
数据访问,通信和同步
这些元素如何合作和沟通?处理器之间如何传输数据?合作的抽象和原语是什么?
性能和可扩展性
如何将其转化为性能(即 性能如何?)? 它如何扩展?
补充:并行体系结构(并行架构)是分布式计算的子类,其中的进程都在工作以解决相同的问题。
并行体系结构是指许多指令能同时进行的体系结构 。
10.MIMD 的并行架构包括哪些实现类型?
共享内存:通过内存通信(P90)(同节点)
有“硬件全局缓存一致性” 和 “非硬件全局缓存一致性”两种
例子1:对称多处理器 Symmetric Multiprocessor(P91)
例子2:非统一性共享内存 Non-uniform shared-memory with separate I/O through host
消息传递message passing(P90):通过消息传递来通信(跨节点)
应用程序在节点之间发送显式消息,以便通信
例子:cluster集群
对于大多数计算机,共享内存基于消息传递网络构建。
11. MPP 架构的典型例子及主要构成? (P93)
主要构成是大点,下面的小点是典型例子
CH3: 并行编程模型
1. 什么是并行编程模型? (P17)
程序员在编写应用程序中使用的,可并行
指定通信和同步
补充: 并行编程模型是并行计算机体系架构的一种抽象,它便于编程人员在程序中编写算法及其
组合。
2. 并行编程模型的主要包括哪些类型?主要特点是什么? (P19)
消息传递message passing
封装本地数据的独立任务
任务通过交换消息进行交互
共享内存shared memory
任务共享一个公共地址空间
任务通过异步读写该空间进行交互(读写共享变量)
数据并行data parallelization
任务执行一系列独立的操作
数据通常跨任务平均分配(均匀划分)
也称为“尴尬(并行)”
3. 并行编程模型主要包括哪几部分?
控制Control
如何创建并行性?应该以什么顺序进行操作?不同的控制线程如何同步?
命名Naming
什么数据是私有数据还是共享数据?如何访问共享数据?
操作operations
什么是原子操作?
代价Cost
如何计算运营成本?
注:并行编程模型parallel programming model位于并行应用之下,在OS,compiler和库之上。
4.共享内存模型有哪些实现? (P32)
本机编译器和/或硬件映射用户程序变量到实际的内存地址,这是全局的
在独立的SMP机器上,这很简单
在分布式共享内存机器(例如SGI Origin)上,内存物理分布在机器网络中,但是通过专用硬件和
软件实现了全局性。
补充:共享内存模型的好处(P29)&缺点(P30)
好处:从程序员的角度来看,此模型的优点是缺少数据“所有权”的概念,因此无需显式指定
任务之间的数据通信。程序开发通常可以简化。
缺点:难以理解和管理数据局部性
将数据保持在使用该处理器的本地,可以节省内存访问,高速缓存刷新以及在多个处理
器使用同一数据时发生的总线流量。
不幸的是,控制数据局部性很难理解,并且超出了普通用户的控制范围
5. 造成并行编程模型不能达到理想加速比的原因? (P43)
有串行的部分,不能加速,所以达不到“理想加速比”
性能的提高无法抵消掉管理开销(线程创建开销):特别是在问题规模较小时。
线程开销,数据划分不均衡,共享数据带来的竞争问题,保护带来的死锁问题
剩余26页未读,继续阅读
无能为力就要努力
- 粉丝: 16
- 资源: 332
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0