
GEMM优化、并行优化、算子优化,从BLISlab项目入手!
GEMM优化在深度学习、科学计算等领域都有重要意义,本文通过视频、文字、转载等各种方式,让你对gemm有一个系统的、全面的、深入的认识。
BLISlab是一个开源教学项目,提供了完整的代码范例和测试脚本教人如何一步步优化矩阵乘法。为此,张先轶(中科院博士,OpenBLAS国际知名开源项目发起人)录制了一个公开课系列,基于BLISlab项目给大家系统讲解GEMM优化。
>> 视频三连发,您能不能也三连发?“点赞-->转发-->关注”
【张先轶】BLISlab学习优化矩阵乘。第一课
【张先轶】BLISlab学习优化矩阵乘。第一课_哔哩哔哩_bilibili
【张先轶】BLISlab学习优化矩阵乘。第二课
【张先轶】BLISlab学习优化矩阵乘。第二课_哔哩哔哩_bilibili
【张先轶】BLISlab学习优化矩阵乘。第三课
【张先轶】BLISlab学习优化矩阵乘。第三课_哔哩哔哩_bilibili
GEMM是什么?
将两个输入矩阵乘法在一起,得到一个输出矩阵。
GEMM重要且典型
1. 在深度学习中是十分重要的,全连接层以及卷积层基本上都是通过GEMM
来实现的,而网络中大约90%的运算都是在这两层中。而一个良好的GEMM
的实现可以充分利用系统的多级存储结构和程序执行的局部性来充分加速运算。
2. 在高性能领域,对于矩阵乘(GEMM)的优化是一个非常重要的课题。GEMM非常广泛地应用于航空航天、流体力学等科学计算领域,即HPC的主要应用场景。
3. 论文也很多。例如Understanding the GPU Microarchitecture、Fast implementation of dgemm on fermi gpu、 Dissecting the NVIDIA Volta GPU Architecture via Microbenchmarking。
GEMM和BLAS(OpenBLAS的关系)
BLAS
全称是Basic Linear Algebra Subprograms
是规定了一套低级的执行常见线性代数操作的规范。其实现经常针对特殊的机器进行优化,比较著名的·BLAS库有
ACML, ATLAS, MKL, OpenBLAS。许多常见的数值软件均采用兼容
BLAS规范的实现库来进行线性代数计算,比如
Matlab, Numpy, Mathematica`。
其中,Level 1 BLAS
主要提供向量操作
Level 2 BLAS
提供矩阵向量操作(gemv)
而Level 3 BLAS
则提供广义矩阵乘积操作(gemm)
更多学习资料
* 在不同的CPU上进行GEMM性能优化,意味着如何发挥计算芯片的极致性能,包括指令集特点、流水线特性、Cache、DMA、SIMD等指令集扩展。
* 从AI推理引擎看GEMM的关键意义。
* 在GPU、NPU场景,同样需要GEMM优化,指令集和架构更是千差万别。例如:
更多推荐
所有评论(0)