23kwords21 mins.

# 前言 本篇文章简单介绍矩阵乘的加速方法,以学习算子加速需要注意的方面。想要学习更多内容可以参考《OpenBLAS gemm 从零入门》,《BLISlab: A Sandbox for Optimizing GEMM》,道阻且长_再探矩阵乘法优化,《How To Optimize GEMM》等项目或文章。 作为初学者,错误在所难免,还望不吝赐教。 # 1. 基准算法 矩阵乘运算的基准算法,未经过任何优化。矩阵以行主序进行排布, 针对 X86 平台。矩阵 C= A * B,A 矩阵为 (M,K), B 矩阵为 (K,N)。 #include <stdio.h>#defi
14kwords13 mins.

# 前言 本系列文章将从代码和流程图入手,详细介绍 TVM AI 编译器的编译流程。本文章为第五篇,对应的 TVM 版本为当前最新版本 1.7。 网络上有不少 TVM 工程的教程资源,如果本博客也是其他教程的简单重复的话,则网络的角落里又多了一份纯粹的空间占用者。所以我在想,本文章有什么特点才值得一看呢?我觉得有两个优点: 1、本文从代码出发,不会泛泛而谈,能够从细节了解 TVM;2、自认为结构流程图画的不错,能够从整体上把握 TVM 的脉络。所以,也许值得一看呢。 本篇文章介绍 TVM FuseOps 算子融合 Pass。文章 《【TVM】通过代码学习编译流程【4】BuildRelay》 已
17kwords15 mins.

# 前言 本系列文章将从代码和流程图入手,详细介绍 TVM AI 编译器的编译流程。本文章为第六篇,对应的 TVM 版本为当前最新版本 1.7。 网络上有不少 TVM 工程的教程资源,如果本博客也是其他教程的简单重复的话,则网络的角落里又多了一份纯粹的空间占用者。所以我在想,本文章有什么特点才值得一看呢?我觉得有两个优点: 1、本文从代码出发,不会泛泛而谈,能够从细节了解 TVM;2、自认为结构流程图画的不错,能够从整体上把握 TVM 的脉络。所以,也许值得一看呢。 本篇文章介绍 TVM CodeGen 函数。文章 《【TVM】通过代码学习编译流程【4】BuildRelay》 已经介绍了 Bu
9.2kwords8 mins.

# 前言 文章 《【TVM】通过代码学习编译流程》系列 主要介绍 TVM 在模型编译过程的流程,有时候感觉缺少了对类及其属性和方法的介绍。所以决定在系列文章的中间插入一些 “类的结构及其属性方法” 的介绍。 本篇文章主要介绍 Pass 及其相关类。 作为初学者,错误在所难免,还望不吝赐教。 # Pass 可以再回顾一下在《【TVM】通过代码学习编译流程【4】》中讲到的本体、桥梁、指针的关系。 先看一看 Pass 的基类, 位于 include/tvm/ir/transform.h 。 Pass 本体 PassNode 。内容很少,主要就是 Pass 的执行函
16kwords15 mins.

# 前言 本系列文章将从代码和流程图入手,详细介绍 TVM AI 编译器的编译流程。本文章为第四篇,对应的 TVM 版本为当前最新版本 1.7。 网络上有不少 TVM 工程的教程资源,如果本博客也是其他教程的简单重复的话,则网络的角落里又多了一份纯粹的空间占用者。所以我在想,本文章有什么特点才值得一看呢?我觉得有两个优点: 1、本文从代码出发,不会泛泛而谈,能够从细节了解 TVM;2、自认为结构流程图画的不错,能够从整体上把握 TVM 的脉络。所以,也许值得一看呢。 本篇文章介绍 TVM BuildRelay 函数。文章 《【TVM】通过代码学习编译流程【3】模型编译》 已经介绍了 Relay
3.3kwords3 mins.

# 前言 本篇讲解 Tiling 操作为什么能够优化神经网络推理。 也可以参考 《Ascend C 算子优化实用技巧 04——Tiling 优化》 作为初学者,错误在所难免,还望不吝赐教。 # 什么是 tiling 无法完整的容纳算子的输入与输出,需要每次搬运一部分输入进行计算然后搬出,再搬运下一部分输入进行计算,直到得到完整的最终结果,这个数据切分、分块计算的过程称之为 Tiling,切分数据的算法称为 Tiling 算法或者 Tiling 策略。 # tile 算子和 tiling 的区别 我们先问一问语言大模型两者的区别: # 神经网络推理中的 Tile 算子 在神经网络中,会发现 ti
24kwords22 mins.

# 前言 本系列文章将从代码和流程图入手,详细介绍 TVM AI 编译器的编译流程。本文章为第三篇,对应的 TVM 版本为当前最新版本 1.7。 网络上有不少 TVM 工程的教程资源,如果本博客也是其他教程的简单重复的话,则网络的角落里又多了一份纯粹的空间占用者。所以我在想,本文章有什么特点才值得一看呢?我觉得有两个优点: 1、本文从代码出发,不会泛泛而谈,能够从细节了解 TVM;2、自认为结构流程图画的不错,能够从整体上把握 TVM 的脉络。所以,也许值得一看呢。 本篇文章介绍 TVM 对模型的编译流程。文章 《【TVM】通过代码学习编译流程【2】模型转换》 已经介绍了 onnx 模型转换为
20kwords18 mins.

# 前言 本系列文章将从代码和流程图入手,详细介绍 TVM AI 编译器的编译流程。本文章为第二篇,对应的 TVM 版本为当前最新版本 1.7。 网络上有不少 TVM 工程的教程资源,如果本博客也是其他教程的简单重复的话,则网络的角落里又多了一份纯粹的空间占用者。所以我在想,本文章有什么特点才值得一看呢?我觉得有两个优点: 1、本文从代码出发,不会泛泛而谈,能够从细节了解 TVM;2、自认为结构流程图画的不错,能够从整体上把握 TVM 的脉络。所以,也许值得一看呢。 本篇文章以 onnx 为例,介绍主流模型转换为 TVM 高级中间表示 Relay IR 的过程。 作为初学者,错误在所难免,还望
4.4kwords4 mins.

# 前言 本系列文章将从代码和流程图入手,详细介绍 TVM AI 编译器的编译流程。本文章为第一篇,取名为 “必要知识”,约等于 “大杂烩”。食之无味,弃之可惜。但基于我个人的主观喜好和偏见,这些知识值得在整个代码讲解之前声明。 作为初学者,错误在所难免,还望不吝赐教。 # 工程结构 TVM 主要由 C++ 语言和 Python 语言实现。 a.TVM C++ 后端核心代码 位于 /home/user/tvm/src C++ 后端核心代码的功能是生成 libtvm.so libtvm_runtime.so,分别是模型编译过程中的需要的 libtv
483words1 mins.

# 介绍 四五年前就开始构思一部小说。那时起就不断地撰写纲要,描述关键节点剧情,甚至开始跳着写中间的一些章节。不过总感到不妥,小说的立意太低了,剧情太老套了,可能和 XX 很像,我才不愿意仿写,等等很多原因,我又不得不停下来重新思考整个小说的立意、构思。 小说经过了多次彻头彻尾的改造,重新设计了关键节点,调整了新的纲要。不得不说,尽管写作是一个漫长的过程,但是小说的立意构思阶段不见得工作量更小。 在几个月前,终于调整好构思之后,重新开始写作。现在写的很慢,之前在学校里会抽时间写一点,现在上班了,只能是下班玩够了之后,写一个小时左右。不知不觉,到今天正文已经有 3 万余字了。特意查了一下,《三体