【HPC】高性能计算总结

记录高性能计算这一领域的学习笔记

References

概念

并行计算三要素

  • 硬件:并行计算机/体系结构
  • 算法:并行算法设计/应用问题的并行度
  • 软件:并行编程环境/Linux/Fortran/C/C++/MPI/OpenMP

代码优化

编码优化

  • 分支预测:https://blog.csdn.net/yaojingqingcheng/article/details/120913601
  • simd优化:
  • 数据结构布局优化:https://blog.csdn.net/yaojingqingcheng/article/details/122418208
  • 循环优化技术:输入值嵌入、分支消除、减少子过程调用次数、循环合并、子过程合并、改变循环变量的迭代顺序、改变数组维数、循环展开、循环分块(提高cache命中率,利用cache line) video
  • 利用局部性原理
  • CPU寄存器、内存、外存:优化缓存,如用restrict关键字说明指针间地址不存在关联。

并行编程

概念

  • 指令并行:CPU流水线
  • 分布式并行:MPI
  • 共享存储式并行:OpenMP、OpenCL、OpenACC parallel

SIMD(Single Instruction Multi-Data)

  • SIMD是CPU实现DLP(Data Level Parallelism)的关键
  • x86架构
    • SSE指令集(Streaming SIMD Extensions系列),使用XMM寄存器
    • AVX指令集(Advanced Vector Extensions系列),使用YMM寄存器,相比SSE扩充浮点
  • arm架构
  • riscv架构
  • 优点:更高速的计算方法
  • 缺点:更高的开发复杂度,专用的CPU组件

SIMT(Single Instruction Multi-Threads)

CUDA/ROCM

  • CUDA:NIDIA
  • ROCM:AMD

OpenMP(Open Multi-Processing)

  • openMP介绍
  • 高性能计算入门:OpenMP并行编程技术(一):https://www.bilibili.com/video/BV1ss4y1K7q1?p=1
  • OpenMP编程三要素:
    • 编译指导(Compiler Directive):包含并行域指令、工作共享指令、同步指令、数据环境
    • 运行库函数(Runtime Library Routines)
    • 环境变量(Environment Variables)
  • OpenMP模式:fork-join,是针对CPU的并行编程模型,基于线程
  • 硬件内存模型:
    • CPU在主存上有L1、L2、L3多级缓存
    • L3为多核共有,但L1和L2为每个核心私有,所以存在缓存一致性问题(False Sharing)

OpenCL(Open Computing Language)

  • 跨平台
  • 基于C/C++语言

OpenACC

  • 针对GPU,OpenMP模型在GPU上的扩展,支持AMD GPU
  • openACC介绍

MPI

  • MPI,Message Passing Interface,消息传递接口,主要用于进程间的消息传递(或数据传递)
  • MPI介绍

性能分析

程序流程分析

  • 静态分析:即对代码进行数据对象、函数接口封装和调用分析,工具understand
  • 动态分析:即程序实际调用过程中分析执行的函数及流程,工具gprof
Licensed under CC BY-NC-SA 4.0
最后更新于 Feb 19, 2025 00:00 +0800
loveleaves
使用 Hugo 构建
主题 StackJimmy 设计