GEMM优化、并行优化、算子优化,从BLISlab项目入手! GEMM重要且典型

这篇具有很好参考价值的文章主要介绍了GEMM优化、并行优化、算子优化,从BLISlab项目入手! GEMM重要且典型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

BLISlab是一个开源教学项目,提供了完整的代码范例和测试脚本教人如何一步步优化矩阵乘法。为此,张先轶(中科院博士,OpenBLAS国际知名开源项目发起人)录制了一个公开课系列,基于BLISlab项目给大家系统讲解GEMM优化。 

>> 视频三连发,您能不能也三连发?“点赞-->转发-->关注”

【张先轶】BLISlab学习优化矩阵乘。第一课

【张先轶】BLISlab学习优化矩阵乘。第一课_哔哩哔哩_bilibili ​​​​​​​

【张先轶】BLISlab学习优化矩阵乘。第二课

【张先轶】BLISlab学习优化矩阵乘。第二课_哔哩哔哩_bilibili

【张先轶】BLISlab学习优化矩阵乘。第三课

【张先轶】BLISlab学习优化矩阵乘。第三课_哔哩哔哩_bilibili


GEMM是什么?

将两个输入矩阵乘法在一起,得到一个输出矩阵。

GEMM优化、并行优化、算子优化,从BLISlab项目入手!
GEMM重要且典型

GEMM重要且典型

1. 在深度学习中是十分重要的,全连接层以及卷积层基本上都是通过GEMM来实现的,而网络中大约90%的运算都是在这两层中。而一个良好的GEMM的实现可以充分利用系统的多级存储结构程序执行的局部性来充分加速运算。

GEMM优化、并行优化、算子优化,从BLISlab项目入手!
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优化、并行优化、算子优化,从BLISlab项目入手!
GEMM重要且典型

GEMM和BLAS(OpenBLAS的关系)

BLAS全称是Basic Linear Algebra Subprograms是规定了一套低级的执行常见线性代数操作的规范。其实现经常针对特殊的机器进行优化,比较著名的·BLAS库有ACML, ATLAS, MKL, OpenBLAS。许多常见的数值软件均采用兼容BLAS规范的实现库来进行线性代数计算,比如Matlab, Numpy, Mathematica`。

其中,Level 1 BLAS主要提供向量操作

GEMM优化、并行优化、算子优化,从BLISlab项目入手!
GEMM重要且典型


Level 2 BLAS提供矩阵向量操作(gemv)

GEMM优化、并行优化、算子优化,从BLISlab项目入手!
GEMM重要且典型


Level 3 BLAS则提供广义矩阵乘积操作(gemm)

GEMM优化、并行优化、算子优化,从BLISlab项目入手!
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文章来源地址https://www.toymoban.com/news/detail-421563.html

到了这里,关于GEMM优化、并行优化、算子优化,从BLISlab项目入手! GEMM重要且典型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 矩阵乘法优化:GEMM中如何将大矩阵切割成小矩阵

     论文自然还是 Anatomy of High-Performance Matrix Multiplication。 如何拆分 一个矩阵乘法有 6 种拆分方式,其中对 row-major 效率最高的是: 第一次拆分 先做第一次拆分,取 A 的 kc 列(PanelA)和 B 的 kc 行(PanelB),得到待累加的一部分结果; 第二次拆分 第二次拆分,把 PanelB 按 nc 大

    2024年04月27日
    浏览(27)
  • 稳压二极管工作原理、重要参数意义和典型电路参数计算

    稳压二极管的工作原理:稳压二极管也叫稳压管,它在电路中一般起到稳定电压的作用,也可以为电路提供基准电压值。稳压二极管使用特殊工艺制造,这种工艺使它在反向击穿时仍然可以长时间稳定工作,不损坏,而工作在反向击穿状态的稳压管只要工作电流保持在一定范

    2024年02月13日
    浏览(35)
  • Selenium 中并行测试的重要性!

    随着技术的进步,测试解决方案变得更具可扩展性,加速了团队从手动测试到Selenium测试自动化的转型。但是成年人的世界,没有什么是容易的。对于许多团队来说,并行运行多个测试仍然是不可扩展的。他们倾向于遵循传统的顺序执行测试方法,但是这需要大量时间、精力

    2024年02月03日
    浏览(44)
  • Selenium 中并行测试的重要性

    目录 前言: 并行测试 Selenium 中的并行测试 使用 TestNG 和 Selenium 进行并行测试 为什么我们需要在 Selenium 中进行并行测试? 更多测试范围 减少测试时间 成本效益 优化 CI/CD 流程 持续测试 实施并行测试 总结 在软件测试中,Selenium是一个广泛使用的自动化测试工具,用于测试

    2024年02月16日
    浏览(35)
  • 论文阅读:矩阵乘法GEMM的cache优化,子矩阵的切分方法Anatomy of High-Performance MatrixMultiplication

    矩阵乘法优化的知名论文goto paper: 矩阵乘法的优化需要将矩阵切分成子矩阵,用子矩阵相乘的结果组合为原矩阵相乘的结果: 上图是拆分矩阵的方法,M表示矩阵,X方向和Y方向的两个维度都是未知的。P表示横条或竖条,X方向或Y方向有一个方向的维度是极小的。B表示block块

    2024年02月16日
    浏览(39)
  • [3D&Halcon] 3D重要算子及简单处理点云模型求高度示例讲解

    📢博客主页:https://loewen.blog.csdn.net 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 丶布布 原创,首发于 CSDN, 转载注明出处 🙉 📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨ 一. 重要算子解析 read_object_model_3d ( : : FileName, Scale, GenParamName, Gen

    2024年02月03日
    浏览(33)
  • 分析Flink,源和算子并行度不一致时,运行一段时间后,看似不再继续消费的问题,提供解决思路。

    之前有分析过一次类似问题,最终结论是在keyby之后,其中有一个key数量特别庞大,导致对应的subtask压力过大,进而使得整个job不再继续运作。在这个问题解决之后,后续又再次出现了积压的情况,针对这个问题进行排查分析。 通过以下这张图,可以看到当前它是没有数据积

    2024年02月12日
    浏览(32)
  • flink重温笔记(三):Flink 流批一体 API 开发——Transformation 重要算子操作

    前言:今天是学习 flink 第三天啦,学习了高级 api 开发中11 中重要算子,查找了好多资料理解其中的原理,以及敲了好几个小时代码抓紧理解原理。 Tips:虽然学习进度有点慢,希望自己继续努力,不断猜想 api 原理,通过敲代码不断印证自己的想法,转码大数据之路一定会越

    2024年02月19日
    浏览(33)
  • 最优化:建模、算法与理论(典型优化问题

    4.1.1 基本形式和应用背景 再次说明一下,其实这本书很多的内容之前肯定大家都学过,但是我觉得这本书和我们之前学的东西的出发角度不一样,他更偏向数学,也多一个角度让我们去理解 线性规划问题的一般形式如下: min ⁡ x ∈ R n c T x s . t . A x = b G x ≤ e (4.1.1) min_{x{

    2024年02月09日
    浏览(196)
  • 【Spring】从Spring源码入手分析广播与监听并完成项目实战

    近期疫情形势严峻,情形不容乐观,周末也不敢出去浪了,躲在家里“葛优躺”。闲来无事,又翻了遍 Spring 的源码。不翻不知道,一翻吓一跳,之前翻过的源码已经吃进了肚子里,再见亦是陌生人。 个人建议:为了以后能快速的捡起某个知识点,最好的方法还是形成文档,

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包