高性能计算简介

高性能计算的核心是并行处理

高性能计算的三个目标:

  • 算的更快:提升求解速度
  • 算的更多:提升问题规模
  • 算的更好:提升求解精度

高性能计算的衡量单位:

  • 计算能力,Flop/s:浮点数运算每秒
  • 存储能力,B:字节

高性能计算硬件

高性能计算机(超级计算机):一般为多个多核服务器通过高速网络互连组成的系统,称为集群架构(cluster)

多核服务器:包含CPU、内存、存储、加速器、网卡

  • 使用并行文件系统,存储节点独立于计算节点,与计算节点通过高速互联网络处理IO
  • 网络使用比以太网更加快速、短程的Infiniband(IB),核心技术为远程直接内存访问(RDMA)

并行计算硬件模型

Flynn分类法

并行计算硬件模型的Flynn分类法:从处理单元的角度考虑指令流数据流

  • SISD:单指令流、单数据流
    • 单核处理器
  • SIMD:单指令流、多数据流
    • 例如CPU中的向量处理单元、GPU
    • 可以并行操作数据
  • MISD:多指令流、单数据流
    • 实际应用很受限
  • MIMD:多指令流、多数据流
    • 现代计算机、多核处理器

内存视角分类

共享内存

  • 所有处理单元与共享内存相连,处于同一地址空间
  • 任何处理单元可以直接访问任何内存位置
  • 均匀内存访问架构(UMA):每个处理器访问每个地址的性能相同
  • 非均匀内存访问架构(NUMA):每个单元有局部内存,访问局部内存优于访问远程内存;可以拓展到很大规模

分布式内存

  • 每个处理单元拥有自己的内存,不同内存地址空间独立
  • 数据传输不能直接访问,需要显式通信

对称多处理器(SMP)

  • 包含多个相同处理器,连接到一个共享内存
  • 多个处理器是同构、对称的
  • 可以同时处理不同任务

image-20250127094521659

单芯片多处理器(CMP)

  • 将SMP技术应用到单个处理器内,也叫多核处理器

并行编程模型

共享内存模型

不同指令流并发执行

指令流之间的同步采用共享变量

数据存放在单一地址空间,不需要显式通信

适用共享内存架构的硬件模型(例子:多线程

进程:进行数据隔离

线程:在进程内部进行指令流隔离

例子:pthread、OpenMP

消息传递模型

不同指令流并发执行

指令流之间的同步基于通信

数据存放在不同指令流的独立地址空间,需要显式通信

适用分布式内存架构共享内存架构

使用MPI作为事实标准,MPI有不同实现

数据并行模型

在不同数据上执行相同逻辑,逻辑上只有一个指令流,操作多份数据

适用SIMD或分布式内存架构

例子:向量扩展指令、MapReduce编程模型

MapReduce:对向量输入的计算分为两个阶段

  • Map:以相同的逻辑处理输入中的每个元素,即“映射”
  • Reduce:综合映射得到的中间结果,得到最终结果

混合多种并行编程模型

实际使用中往往混合应用,例如分布式深度学习训练:

  • 节点间采用消息传递模型
  • 节点内采用三种模型综合

科学计算中,使用超大规模集群、多核节点、异构计算设备

并行计算性能指标

加速比S(p)=Ts/TpS(p)=T_s/T_p

  • TsT_s为串行时间,TpT_p为并行时间,pp为处理单元数目
  • 线性加速:S(p)=pS(p)=p,为理想情况的最大加速比
  • 超线性加速:S(p)>pS(p)>p,实际情况中有时会发生
  • 亚线性加速:S(p)<pS(p)<p,是典型的情况

难以实现理想线性加速的原因:

  • 程序不是所有部分都可以并行
  • 并行处理引入通信和同步开销(比较重要)
  • 并行可能引入额外计算(比如重复计算)