并行计算复习————第一篇 并行计算硬件平台:并行计算机
并行计算复习
第一篇 并行计算硬件平台:并行计算机
Ch1 并行计算与并行计算机结构模型
1.1多核处理器与线程级并行
1.何谓多核处理器?
将功能复杂的单一核处理器划分为若干个功能相对简单的多个处理器内核,这些多处理器集中在一块芯片上,最初称为单芯片多处理器CMP,Intel公司将其商用名定为多核处理器
2.多核处理器的意义:
- 解决单处理器瓶颈:密集晶体管集成,功耗剧增;设计指令级并行体系结构来利用晶体管资源,但软件与硬件设计复杂
- 具有自己的优势:CMP设计验证周期短、开发风险成本低,相对较低的主频功耗也相对较低、单处理器程序移植容易,通过布局能够改善多处理器内核之前延迟和带宽
3.微处理器中的并行方式
- ILP:指令级并行,单处理器同时执行多条指令,包括乱序执行、分支预测、指令多发射、硬件预取等技术
- TLP:线程级并行,多处理器多线程执行
- 多任务OS:多进程多线程分时间片轮转或抢占式,OS管理
- SMT:同时多线程技术,超标量与多线程的结合,同时发射多个线程中的多条不相关指令
- CMP:单芯片多处理器
- 虚拟计算技术:异构平台,剥离指令集结构和处理器依赖关系(运行时虚拟化JVM、系统虚拟化)
- Intel超线程技术:单核心模拟双核心环境执行多线程,是一种SMT
1.2 并行计算机体系结构
1.并行计算机结构模型
(1)结构类型
- SISD:单指令流单数据流计算机(冯诺依曼机)
- SIMD:单指令流多数据流计算机
- MISD:多指令流单数据流计算机
- MIMD:多指令流多数据流计算机
(2)几种MIMD
- PVP并行向量处理机:多VP(向量处理器)通过交叉开关和多个SM(共享内存)相连
- SMP对称多处理机:多P/C(商品微处理器)通过交叉开关/总线和多个SM(共享内存)相连
- MPP大规模并行处理机:处理节点有商品微处理器+LM(分布式本地内存),节点间通过高带宽低延迟定制网络互联,异步MIMD,多个进程有自己的地址空间,通过消息传递机制通信
- COW工作站机群:节点是完整操作系统的工作站,且有磁盘
- DSM分布共享存储处理机:高速缓存目录DIR确保缓存一致性,将物理分布式LM组成逻辑共享SM从而提供统一地址的编程空间
注:对称指所有处理器都能同等地访问I/O很同样的运行程序(如OS和I/O服务程序),而非对称主从式是仅有主处理器运行OS和控制访问I/O并监控从处理器执行
2.并行计算机访存模型
- UMA(Uniform Memory Access)均匀存储访问:物理存储器被所有处理器均匀共享,所有处理器对所有SM访存时间相同,每台处理器可带有高速私有缓存,外围设备共享。
- NUMA非均匀存储访问:共享的SM是由物理分布式的LM逻辑构成,处理器访存时间不一样,访问LM或CSM(群内共享存储器)内存储器比访问GSM(群间共享存储器)快
- COMA(Cache-Only MA)全高速缓存存储访问:NUMA的特例、全高速缓存实现
- CC-NUMA(Coherent-Cache NUMA)高速缓存一致性NUMA:NUMA+高速缓存一致性协议
- NORMA(No-Remote MA)非远程存储访问:无SM,所有LM私有,通过消息传递通信
3.Cache一致性协议
- 监听总线协议:总线连接通信,写无效和写更新策略
- 基于目录的协议:目录记录共享数据缓存状态,读缺失时查看目录D,写更新时通知目录D
4.其他并行计算概念
衡量并行计算机性能单位:
- PFLOPS:每秒1千万亿 (=10^15) 次的浮点运算
- TFLOPS:每秒1万亿 (=10^12) 次的浮点运算
- GFLOPS:每秒10亿 (=10^9) 次的浮点运算
TOP500前500名超级计算机排名指标(GFLOPS):
- Rmax:Maximal LINPACK(Linear system package) performance achieved
- Rpeak:Theoretical peak performance
Ch2 并行计算机系统互连与基本通信操作
2.1 并行计算机互连网络
互连网络是并行计算机系统中各处理器与内存模块等之间传输的机制
1.静态互连
处理单元间有固定连接的网络,程序执行期间这种点到点的连接不变
- 一维线性阵列LA/LC:二邻近串联
- 二维网孔MC:四邻近连接(Illiac连接、2D环绕)
- 树连接TC:二叉树、星型网络、二叉胖树(节点通路向根节点方向逐渐变宽,解决通信瓶颈)
- 超立方HC:3立方、4立方
- 立方环:3立方顶点用环代替
2.动态互连
交换开关构成的,可按应用程序要求动态改变连接组态
- 总线:连接处理器、存储模块、I/O外围设备等的一组导线和插座,分时工作、多请求总线仲裁,多总线(本地、存储、数据、系统)和多层总线(板级、底板级、I/O级)
- 交叉开关:高带宽的开关控制的专用连接通路网络,NxN的开关网络同时只能接通N对源目的通信
- 多级互联网络MIN:每一级用多个开关单元,各级之间有固定的级联拓扑
3.标准网络互连
- FDDI光纤分布式数据接口
- 快速以太网
- Myrinet:商用千兆位包开关网
- InfiniBand:交换式通信结构
2.2-2.5 通信代价公式
1.选路
(1)消息格式
消息是由一些定长的信包组成,信包包括了
- 选路信息R
- 顺序号S
- 多个数据片D
(2)存储转发选路SF
SF中信包是基本传输单位,中间节点必须收齐信包中所有分片且存储在缓冲器后才可能传向下一节点
长度为m的信包,穿越l条链路,SF基本通信时间公式:
t_{comm}(SF)=t_s+(mt_w+t_h)l
其中tst_s是启动时间,tht_h是节点延迟时间,twt_w是传输每个字节的时间(带宽倒数)
(3)切通选路CT
CT中信包切片传输(包头和数据片),类似流水线
长度为m的信包,穿越l条链路,CT基本通信时间公式:
t_{comm}(CT)=t_s+mt_w+lt_h
2.SF一到多播送
(1)一维环
最远的节点是瓶颈:
t_{one-to-all}(SF)=(t_s+mt_w)\lceil p/2\rceil
(2)带环绕的Mesh
先完成行SF环绕播送,再完成列的SF环绕播送(即两次节点个数为p‾‾√\sqrt{p}的一维环SF):
t_{one-to-all}(SF)=2(t_s+mt_w)\lceil \sqrt{p}/2\rceil
(3)超立方
同理带环绕的Mesh,可推知:
t_{one-to-all}(SF)=3(t_s+mt_w)\lceil p^{\frac{1}{3}}/2\rceil
3.CT一到多播送
(1)一维环
CT通信时间与中继节点无关,采取先按高维播送,再按中维播送,最后按低维播送:
\begin{align} t_{one-to-all}(CT)&=\sum_{i=1}^{\log(p)}(t_s+mt_w+t_h \times p/2^i) \\\\ &=(t_s+mt_w)\log(p)+t_h(p-1) \end{align}
(2)带环绕的Mesh
t_{one-to-all}(CT)=(t_s+mt_w)\log(p)+2t_h(\sqrt{p}-1)
(3)超立方
t_{one-to-all}(CT)=(t_s+mt_w)\log(p)
2.SF多到多播送
(1)一维环
p-1次环路传播:
t_{all-to-all}(SF)=(t_s+mt_w)(p-1)
(2)带环绕的Mesh
先行环路多播,再列环路多播
\begin{align} t_{all-to-all}(SF)&=(t_s+mt_w)(\sqrt{p}-1)+(t_s+m\sqrt{p}t_w)(\sqrt{p}-1)\\\\ &=2t_s(\sqrt{p}-1)+mt_w(p-1) \end{align}
(3)超立方
t_{all-to-all}(SF)=t_slog(p)+mt_w(p-1)
Ch4 并行计算性能评测
4.1 基本性能指标(见书)
4.2 加速比性能定律
约定:
- pp是处理器数
- 问题规模WW=程序中串行分量WsW_s+可并行部分WhW_h
- ff为串行部分比例,f=Ws/Wf=W_s/W
- SS为加速比
1.Amdahl加速定律
固定负载加速比公式:
\begin{align} S&=\frac{W_s+W_p}{W_s+\frac{W_p}{p}}\\\\ &=\frac{1}{f+\frac{1-f}{p}}\\\\ \lim_{p \to \infty}S&=\frac{1}{f} \end{align}
若考虑并行额外开销W0W_0:
\begin{align} S&=\frac{W_s+W_p}{W_s+\frac{W_p}{p}+W_0}\\\\ &=\frac{1}{f+\frac{1-f}{p}+\frac{W_0}{W}}\\\\ \lim_{p \to \infty}S&=\frac{1}{f+\frac{W_0}{W}} \end{align}
2.Gustafson
实际应用中增多了处理器不会固定问题规模,而是保持总时间不变的情况下去增大问题规模:
\begin{align} S&=\frac{W_s+pW_p}{W_s+\frac{pW_p}{p}}=\frac{W_s+pW_p}{W_s+W_p}\\\\ &=f+p(1-f) \end{align}
若考虑并行额外开销W0W_0:
\begin{align} S&=\frac{W_s+pW_p}{W_s+\frac{pW_p}{p}+W_0}=\frac{W_s+pW_p}{W_s+W_p+W_0}\\\\ &=\frac{f+p(1-f)}{1+W_0/W} \end{align}
3.Sun&Ni定律
问题规模增加了,相应的存储容量也要增加p倍,令因子G(p)G(p)为存储容量增加到p倍时工作负载的增加,则有加速比:
\begin{align} S&=\frac{W_s+G(p)W_p}{W_s+\frac{G(p)W_p}{p}}\\\\ &=\frac{f+(1-f)G(p)}{f+(1-f)G(p)/p} \end{align}
若考虑并行额外开销W0W_0:
\begin{align} S&=\frac{W_s+G(p)W_p}{W_s+\frac{G(p)W_p+W_0}{p}}\\\\ &=\frac{f+(1-f)G(p)}{f+(1-f)G(p)/p+W_0/W} \end{align}
并行计算复习————第一篇 并行计算硬件平台:并行计算机相关推荐
- 并行计算综述————第一章 并行计算硬件平台:并行计算机
并行计算综述 第一章 并行计算硬件平台:并行计算机 Ch1 并行计算与并行计算机结构模型 1.1多核处理器与线程级并行 1.何谓多核处理器? 将功能复杂的单一核处理器划分为若干个功能相对简单的多个处理 ...
- CCIE理论-第一篇-SDN概念复习
CCIE理论-第一篇-SDN概念复习 SDN-软件定义网络(Software Defined Network,SDN 最主要的核心概念是方便管理设备 传统网络 其实这个SDN也不是多牛逼的东西,他只是 ...
- pytorch 指定卡1_[原创][深度][PyTorch] DDP系列第一篇:入门教程
引言 DistributedDataParallel(DDP)是一个支持多机多卡.分布式训练的深度学习工程方法.PyTorch现已原生支持DDP,可以直接通过torch.distributed使用,超 ...
- 重温《数据库系统概论》【第一篇 基础篇】【第1章 绪论】
时隔两年,重温数据库,再次学习人大教授王珊.萨师煊的<数据库系统概论>,别有一番滋味在心头,或许这就是软件"不归路"上的感悟吧,又一次打开课本,记忆犹新,在已经学习过大 ...
- 来自1976,Hinton写的第一篇论文火了:胶囊网络,是40年前的胶囊?
挖栗子 发自 凹非寺 量子位 报道 | 公众号 QbitAI 有人把一篇来自1976年的论文刨了出来,仅一日的工夫已在推特上收获了400多赞. 论文的主人Geoffrey Hinton,许多年后成了 ...
- b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释
b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释 继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更 ...
- 聊聊后端程序员的知识体系-第一篇
聊聊后端程序员的知识体系-第一篇 原文链接:https://www.fpthinker.com/backend_knowledge_architecture/knowledge.htmll 亲爱的读者 ...
- 重温《数据库系统概论》【第一篇 基础篇】【第5章 数据库完整性】
本篇内容为中国人民大学教授王珊.萨师煊的<数据库系统概论>自学课程的复习笔记,学习视频源于小破站(传送门),对应视频P32-P36,属教材"[第一篇 基础篇]"的&qu ...
- 重温《数据库系统概论》【第一篇 基础篇】【第4章 数据库安全性】
本篇内容为中国人民大学教授王珊.萨师煊的<数据库系统概论>自学课程的复习笔记,学习视频源于小破站(传送门),对应视频P28-P31,属教材"[第一篇 基础篇]"的&qu ...
最新文章
- iOS Hacker 使用Reveal分析App的UI界面
- 负载均衡很难?看完这篇全懂了
- Android 如何调用系统默认浏览器访问
- Android recycleview实现混合itemview,以及recycleview添加头部尾部
- emlog简洁大气白色风格资源站模板源码
- GET和POST史上最全总结
- 《并行计算的编程模型》一2.3.2 段信息
- 创建私有CA及其签署和吊销证书
- java突然无法加载主类_java错误:找不到或无法加载主类的原因与解决方法
- OpenGL纹理叠加基础知识
- 最好的开源网络入侵检测工具
- 盯盯拍罗勇:公司就是我最好的产品
- 【微信小程序】组件覆盖 z-index
- 短视频剪辑怎么自学?短视频剪辑的教程分享
- 去除Ninja的提醒
- 如何将视频中的音频提取出来?
- 淘宝店铺如何好评置顶,如何通过好评留住客户?
- 如何批量修改多个文件的后缀名!
- SpringCloud学习记录(1)-父工程与子模块创建及子模块调用
- 解决图片不显示的问题