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等指令集扩展。
两分钟速览矩阵乘法库openblas核心: gemm - 知乎矩阵乘法是高性能计算、仿真、数据处理、人工智能的基石,它的效率直接关系着智能的成本; 不论是对CPU、GPU、AI芯片、TPU等硬件计算库、算子库开发的工程师来说,还是对深度学习算法、图像图形渲染、仿真开的发者,了解GEMM在CPU上的实现逻辑对这些工作大有裨益; 本视频以当下最优秀的开源计算库Openblas的代码为例子,配合动画一起解析其核心GEMM流程;https://www.zhihu.com/zvideo/1469280545247498240
* 从AI推理引擎看GEMM的关键意义。
OpenPPL 高洋 | 商汤自研 AI 推理引擎的实践之路 - 知乎导读: 北京时间 12 月 7 日,OpenPPL 实战训练营系列课程第一期,商汤科技高性能计算技术执行总监高洋为大家带来了「商汤自研 AI 推理引擎 OpenPPL 的实践之路」的专题课程。本期课程介绍了 PPL 的发展历程、基本…https://zhuanlan.zhihu.com/p/446605759
* 在GPU、NPU场景,同样需要GEMM优化,指令集和架构更是千差万别。例如:
深入浅出GPU优化系列:GEMM优化(一) - 知乎本篇文章是深入浅出GPU优化系列的第两个专题,主要是 介绍如何对GPU中的矩阵乘法(GEMM)进行优化。目前针对GEMM的优化,网络上已经有非常多的教程和示例了。大部分的重要资料我都看了看。但总的来说,还是不够接…https://zhuanlan.zhihu.com/p/435908830
深入浅出GPU优化系列:GEMM优化(二) - 知乎本篇是通用矩阵乘法(GEMM)优化的第二部分,主要来说说具体的代码,并做一个详细的解析。第一部分主要是讲了一些原理,如果没有看过的读者可以去看看,链接在下面。 https://zhuanlan.zhihu.com/p/435908830这篇…https://zhuanlan.zhihu.com/p/442930482文章来源:https://www.toymoban.com/news/detail-421563.html
深入浅出GPU优化系列:GEMM优化(三) - 知乎本篇是通用矩阵乘法(GEMM)优化的第三部分,主要说明 如何从汇编级别来分析代码性能以及如何调整汇编代码以获得更高的性能表现。本篇的内容需要建立在GEMM(一)和GEMM(二)的基础上,如果没有看过前两篇文章的…https://zhuanlan.zhihu.com/p/481600052文章来源地址https://www.toymoban.com/news/detail-421563.html
到了这里,关于GEMM优化、并行优化、算子优化,从BLISlab项目入手! GEMM重要且典型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!