并行计算笔记
Cache 的 4C 模型
| 中文名称 | 英文名称 | 解释 |
|---|---|---|
| 强制失效 | Compulsory Miss | 首次访问 |
| 容量失效 | Capacity Miss | 容量不足 |
| 冲突失效 | Conflict Miss | 映射冲突 |
| 一致性失效 | Coherency Miss | 多核不一致 |
Cache 设计的基本优化方法
- 降低 Miss 率:增加 Cache 容量、块大小、相联度,改善时空局部性
- 降低 Miss 惩罚:多级 Cache,读优先
- 降低命中时间:避免地址转换延迟,精简索引结构
基于 Cache 编程的注意事项
- 循环交换:访问顺序与存储顺序一致
- 循环融合:合并相同循环变量的循环
- 数组合并:行数组 → 结构体
- 矩阵分块:提高局部性
并行外部存储器简介
磁盘阵列
- 多磁盘组成的逻辑存储单元
- 数据分条、冗余校验
- 并行访问提高带宽
- 不同级别满足性能与容错需求
对象存储系统
- 数据和属性封装为对象
- 对象具有唯一标识符
- 基于对象访问,智能分布
- 元数据管理,并行扩展可靠
流水线的三大冲突
结构冲突
- 定义:多指令竞争相同硬件
- 解决方法:
- 增设硬件资源
- 功能单元细分或复制
- 预取和乱序执行
数据冲突
- 定义:指令间操作数读写时序冲突
- 类型:
- 读在写前
- 写在读前
- 写次序颠倒
- 解决方法:
- 前递/旁路(直接传递结果)
- 流水线互锁(硬件检测并暂停)
- 乱序执行
- 寄存器重命名(消除WAR/WAW假依赖)
控制冲突
- 定义:因分支、跳转、子程序调用引发,导致流水线断流
- k级流水线最坏惩罚:(k−1)τ
- 解决方法:
- 静态预测(永不跳转/总是跳转、基于Opcode)
- 动态预测(BHT/BTB、2-bit饱和计数器)
- 延迟分支(编译器填充延迟槽)
- 分支消除(逻辑运算/查表替代条件判断)
流水线的应用技术
- 循环展开:展开循环体,减少分支、提高并行度
- 消除循环相关性:改变指令顺序或使用前递减少迭代间依赖
- 消除循环条件语句:使用查表或逻辑函数替代
- 循环反转:用
do-while替代while,减少一次分支判断 - 分支消除:用三元运算符、max/min函数、条件选择函数等代替 if-else
- 模块化流水线:将程序功能模块串联成流水执行结构(常用于视频处理、神经网络等数据流应用)
- 少用全局变量
云计算的特征
| 特性 | 具体说明 |
|---|---|
| 按需自助服务 | 用户可自主按需申请计算资源,无需服务商人工干预 |
| 泛在网络访问 | 通过标准设备和互联网访问资源,无需特定硬件或环境 |
| 资源池化 | 服务商将资源动态分配给用户,用户无需关注资源物理位置,资源可跨用户共享 |
| 快速弹性 | 资源可快速扩展或收缩,支持水平与垂直扩展,用户感知资源”无限可用” |
| 计量服务 | 基于资源实际使用量进行监控、控制与计费,透明可追溯 |
云计算的服务模型
- 业务流程即服务(BpaaS):提供完整业务流程解决方案,用户仅需使用业务功能,无需管理软件/硬件
- 软件即服务(SaaS):提供可通过 Web 访问的应用软件,用户无需安装、维护。用户仅使用软件功能,无需管理运行环境
- 平台即服务(PaaS):提供开发、测试、部署应用的平台,用户管理应用代码,无需管理底层基础设施
- 基础设施即服务(IaaS):提供虚拟化基础设施资源,用户管理操作系统、软件与数据,无需管理物理硬件
云计算关键技术
- 虚拟化技术
- 资源调度与管理
- 云安全
- 数据存储与管理
- 编程模型与工具
深度学习处理器的特征
- 专用计算单元
- MAC单元用于矩阵和向量运算
- 向量/矩阵功能单元支持大规模并行计算
- 专门硬件模块加速常见神经网络操作
- 内存架构
- 含片上SRAM,存储权重和中间结果
- 高带宽低延迟
- 加权数据复用机制,减少内存访问次数
- 跳过零值
- 基于MSM(神经元选择模块)和SIB(突触索引缓冲)
- 大规模并行计算
- 有利于卷积和全连接
- 利用空间局部性减少数据激动
- 指令集设计
- 有利于数据并行和利用局部性
- 支持向量矩阵操作的聚合指令
- 集成异构系统
- 如Ascend 910
深度学习处理器和GPU的主要差异
| 特性 | DLP | GPU |
|---|---|---|
| 目标 | 神经网络 | 通用并行计算 |
| 单元 | MAC、矩阵单元 | 通用CUDA核心 |
| 能效和通用性 | 高;低 | 低;高 |
| 内存架构 | 专用SRAM、数据复用机制 | 全局内存+缓存,带宽高但延迟较大 |
| 稀疏支持 | 硬件级支持稀疏计算 | 通常无 |
| 指令集 | 针对向量/矩阵操作优化 | 通用 |
| 代表 | Huawei Ascend | NVIDIA V100/A100 |
云安全的层级
- 物理:云数据中心等实体
- 网络:网络传输、通信
- 系统:云服务器、操作系统
- 应用:云平台上的应用程序
- 人员和流程:操作规范和业务流程
云安全问题
- 基础设施故障
- 云计算的滥用与恶意使用
- 不安全的应用程序编程接口
- 恶意内部人员
- 共享技术漏洞
- 数据丢失 / 泄露
- 账号、服务与流量劫持
云安全与隐私控制及相关策略
- 治理:策略和战略,解决其宏观问题,定调安全框架
- 运营:战术和实施
关键策略与控制方法
- GRC(治理、风险与合规):作为核心框架,统筹安全治理、风险评估与合规检查,确保云安全符合内外部要求
- 信任保障:建立云服务提供商与用户间的安全信任机制
- 云架构防护:技术架构设计层面规避风险
- 身份与访问控制
- 软件隔离:隔离不同用户或应用的软件环境
- 数据保护:加密、定期备份、数据脱敏
- IDS(入侵检测系统):实时监测云环境中的异常行为与入侵尝试
云的数据安全手段
- PDP协议
- 加密查询与结果完整性验证
集群
定义
集群是由多台完整计算机组成的并行计算机系统,通过高速网络连接,由专用操作系统管理。
特点
- 节点:每台计算机称为节点,节点既可以是同构的,也可以是异构的
- 架构:松耦合
- 操作系统:集群操作系统运行于节点操作系统之上
- 核心功能:故障管理、负载均衡、并行计算
主要优势
- 绝对可扩展性
- 高可用性
- 卓越的性价比
- 低成本:可利用遗留系统、普通计算机、以太网及免费操作系统搭建
- 投资风险低
分解和同步
分解
将计算任务拆分为多个更小的独立单元,在可用内核上并行执行。
分解的两种类型: - 功能分解 - 静态功能分解 - 动态功能分解 - 基于数据的分解 - 对不同数据集并行执行相同计算 - 事件驱动分解
同步
两个或多个线程协调其行为的过程。
- 同步存在开销,需尽可能最小化
- 并行计算需要交互,比如两个线程访问同一数据、进行信息交换、相互等待
并行计算为何需要同步? - 功能依赖(又称数据依赖):线程需进行通信 - 资源竞争(例如多个线程访问同一数据):需引入保护机制
并行程序设计模式
并行程序设计模式将编程过程划分为 4 个核心步骤: 1. 并发识别 2. 算法结构设计 3. 支撑结构设计 4. 实现机制 — > 来听歌吧 > > https://music.163.com/#/song?id=430026721