一、程序优化
- CPU程序优化
1.1 体系结构:CPU流水线技术、高速缓指令集、CPU超标量设计
1.2 并行技术:MPI、OpenMP、SIMD、汇编
1.3 算法:算法优化 - GPU程序优化
1.1 GPU的体系结构(计算核心、高带宽、多级存储)
1.2 GPU并行框架:CUDA、OpenCL、OpenACC
1.3 并行设计的算法 - 程序优化核心
3.1 算法并行可行性
3.2 编写与体系结构相匹配的程序(并行效率、多级存储、指令集优化)
二、CPU和GPU区别
- CPU核心数量少,GPU核心数量多。
- CPU是减低延迟设计导向,GPU是增加数据吞吐量设计导向。
- CPU适合IO密集型任务,GPU适合数据计算任务。
- CPU切换线程有上下文代价,GPU线程几乎每个都有物理核心,线程切换零开销。
三、所有的机器学习和深度学习模型最基础的计算任务都是稀疏/稠密矩阵、集合基元。
四、稀疏矩阵向量乘问题(SpMV)
- 常见的稀疏矩阵储存方法有 COO、CSR、DIA(适合对角矩阵),通常CSR储存效率高些。
- CSR-SIMD优化,可变长的具有连续地址的非零元段,以段的形式对矩阵进行存储。
五、算法库
- BLAS/LAPACK 是基础的线性代数库
- PETSc C语言实现主要用来求解偏微方程组