GEMM优化、并行优化、算子优化,从BLISlab项目入手!

11 篇文章 2 订阅
3 篇文章 3 订阅

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 MicroarchitectureFast 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

深入浅出GPU优化系列:GEMM优化(三) - 知乎本篇是通用矩阵乘法(GEMM)优化的第三部分,主要说明 如何从汇编级别来分析代码性能以及如何调整汇编代码以获得更高的性能表现。本篇的内容需要建立在GEMM(一)和GEMM(二)的基础上,如果没有看过前两篇文章的…https://zhuanlan.zhihu.com/p/481600052

  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值