并行计算笔记

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):提供虚拟化基础设施资源,用户管理操作系统、软件与数据,无需管理物理硬件

云计算关键技术

  • 虚拟化技术
  • 资源调度与管理
  • 云安全
  • 数据存储与管理
  • 编程模型与工具

深度学习处理器的特征

  1. 专用计算单元
    • MAC单元用于矩阵和向量运算
    • 向量/矩阵功能单元支持大规模并行计算
    • 专门硬件模块加速常见神经网络操作
  2. 内存架构
    • 含片上SRAM,存储权重和中间结果
    • 高带宽低延迟
    • 加权数据复用机制,减少内存访问次数
  3. 跳过零值
    • 基于MSM(神经元选择模块)和SIB(突触索引缓冲)
  4. 大规模并行计算
    • 有利于卷积和全连接
    • 利用空间局部性减少数据激动
  5. 指令集设计
    • 有利于数据并行和利用局部性
    • 支持向量矩阵操作的聚合指令
  6. 集成异构系统
    • 如Ascend 910

深度学习处理器和GPU的主要差异

特性 DLP GPU
目标 神经网络 通用并行计算
单元 MAC、矩阵单元 通用CUDA核心
能效和通用性 高;低 低;高
内存架构 专用SRAM、数据复用机制 全局内存+缓存,带宽高但延迟较大
稀疏支持 硬件级支持稀疏计算 通常无
指令集 针对向量/矩阵操作优化 通用
代表 Huawei Ascend NVIDIA V100/A100

云安全的层级

  1. 物理:云数据中心等实体
  2. 网络:网络传输、通信
  3. 系统:云服务器、操作系统
  4. 应用:云平台上的应用程序
  5. 人员和流程:操作规范和业务流程

云安全问题

  • 基础设施故障
  • 云计算的滥用与恶意使用
  • 不安全的应用程序编程接口
  • 恶意内部人员
  • 共享技术漏洞
  • 数据丢失 / 泄露
  • 账号、服务与流量劫持

云安全与隐私控制及相关策略

  • 治理:策略和战略,解决其宏观问题,定调安全框架
  • 运营:战术和实施

关键策略与控制方法

  • GRC(治理、风险与合规):作为核心框架,统筹安全治理、风险评估与合规检查,确保云安全符合内外部要求
  • 信任保障:建立云服务提供商与用户间的安全信任机制
  • 云架构防护:技术架构设计层面规避风险
  • 身份与访问控制
  • 软件隔离:隔离不同用户或应用的软件环境
  • 数据保护:加密、定期备份、数据脱敏
  • IDS(入侵检测系统):实时监测云环境中的异常行为与入侵尝试

云的数据安全手段

  • PDP协议
  • 加密查询与结果完整性验证

集群

定义

集群是由多台完整计算机组成的并行计算机系统,通过高速网络连接,由专用操作系统管理。

特点

  • 节点:每台计算机称为节点,节点既可以是同构的,也可以是异构的
  • 架构:松耦合
  • 操作系统:集群操作系统运行于节点操作系统之上
  • 核心功能:故障管理、负载均衡、并行计算

主要优势

  • 绝对可扩展性
  • 高可用性
  • 卓越的性价比
  • 低成本:可利用遗留系统、普通计算机、以太网及免费操作系统搭建
  • 投资风险低

分解和同步

分解

将计算任务拆分为多个更小的独立单元,在可用内核上并行执行。

分解的两种类型: - 功能分解 - 静态功能分解 - 动态功能分解 - 基于数据的分解 - 对不同数据集并行执行相同计算 - 事件驱动分解

同步

两个或多个线程协调其行为的过程。

  • 同步存在开销,需尽可能最小化
  • 并行计算需要交互,比如两个线程访问同一数据、进行信息交换、相互等待

并行计算为何需要同步? - 功能依赖(又称数据依赖):线程需进行通信 - 资源竞争(例如多个线程访问同一数据):需引入保护机制

并行程序设计模式

并行程序设计模式将编程过程划分为 4 个核心步骤: 1. 并发识别 2. 算法结构设计 3. 支撑结构设计 4. 实现机制 — > 来听歌吧 > > https://music.163.com/#/song?id=430026721