一、高性能算法
1、计算机算法包含:[输入]、计算、输出三部分,可以没有输入
2、计算机算法有五大特征:
• 有穷性:一个算法必须是执行有限步之后结束
• 确切性:每一步都有确切的意义
• 可行性:算法中的所有操作都可以通过已经实现的基本操作运算执行有 限次来实现。
• 输入:一个或零个输入,刻画运行对象的基本信息
• 输出:一个算法有一个或多个输出,没有输出的算法没有意义
3、高性能算法:
• 稠密类问题
GEMM HPL(Linpack) 图像处理、深度学习、人工智能领域
• 稀疏类问题
SPMV HPCG 科学计算领域应用广泛
4、稀疏矩阵压缩存储的常见方法
COO 方法 Coordinate Matrix 坐标存储格式
CSR 方法 Compressed Sparse Row Matrix压缩稀疏行格式
CSC 方法 Compressed Sparse Column Matrix压缩稀疏列矩阵
BSR 方法 Block Sparse Row Matrix 分块压缩稀疏行格式
DIA 方法 Diagonal Matrix 对角存储格式
二、基础性能分析
1、分析类别:静态分析,静态分析工具:如 understand;动态分析,动态分析工具:如 gprof
2、HPCG 程序背景简介:
HPCG -- The High Performance Conjugate Gradients Benchmark 高性能共轭梯度 (HPCG) 基准项目旨在为 HPC 系统排名创建一个新指标,作为高性能 LINPACK (HPL) 基准的补充,目前用于对 TOP500 计算系统进行排名。 HPL 的计算和数据访问模式仍然是一些重要的可扩展应用程序的代表,但不是全部。 HPCG 旨在锻炼 计算和数据访问模式,以更紧密地匹配不同且广泛的重要应用程序集,并激励计算机系统设计人员投资于对这些应用程序的集体性能 产生影响的能力。
三、基础性能优化
1、从体系架构的角度
• 提高计算速度的技术途径:
(1) 提高主频 (2) 高速缓冲存储器 (3) 流水线技术 (4) 并行技术
2、常见循环优化技术
• 循环合并 • 循环展开 • 循环交换 • 循环分布 • 循环不变量外提 • 循环分块 • 循环分裂
四、并行编程模型简介
1、并行与并发:
• 并发:由一个处理器快速交替执行多个任务,只是看起来像在“同时执行多个任务”
• 并行:由多个处理器分别运行多个任务,各任务间严格同时执行
2、进程与线程
什么是进程?
(1). 程序运行的媒介,进程是动态的,程序是静态的;
(2). 进程是操作系统进行资源分配和调度的一个独立单位;
(3). 每个进程拥有独立的地址空间,地址空间包括代码区、数据区和堆栈区,进程之间的地址空间是隔离 的,互不影响。
什么是线程?
(1). 进程在运行过程中派生出的轻量级单元,同一个进程中的多个线程共享进程的资源;
(2). 可避免进程在创建、销毁与切换存在的较大时空开销问题。
3、基本并行编程概念:
分布式并行 - - MPI
共享内存式并行 - - OpenMP
单指令多数据流并行 - SIMD
4、MPI 和 OpenMP:
MPI 从进程层面实现并行,OpenMP 以线程实现并行
5、并行基本概念:
核内并行 数据级并行 --SIMD单指令多数据流--NEON
核间并行 共享存储式并行 - - 线程 --OpenMP
节点间并行 分布式并行 - - 进程--MP