Sticky Posts

6.1kwords6 mins.

# 暮冬 Z 羡慕 的博客 文章汇总 # 加速算法 【Im2Col】卷积加速算法【1】 NCHW 【Im2Col】卷积加速算法【2】NHWC 【im2col】AScend conv accelerate 【Winograd】卷积加速算法原理及实现 【gemm】Gemm 计算加速 【gemm】内存对齐 【Halide】调度优化【1】 【Halide】调度优化【2】 【conv 加速】NVDLA 卷积加速算法 # AI 推理引擎 【推理引擎】常见推理引擎 【推理引擎】NCNN 和 Tengine 量化推理逻辑对比 【量化】连续卷积层首尾量化的可

Post List

6.4kwords6 mins.

# 序 转载一些重要有趣的文章,侵删。 导读:[陈天奇] CS. PhD 机器学习系统,原文:构建 Agent 时代的机器学习编译器基础层 # 正文 今年是 Agent 元年,不管对于任何的领域,大家都需要感受到这样的变化。对于机器学习编译和 kernel 可能更是如此。传统的机器学习编译尝试利用我们的领域知识从图,tile 和 SIMT 等各个粒度去进行变化和优化,使得我们可以再各个硬件上通过简洁的代码获得很高的效率。强大 agent 的出现使得只要我们有足够多的 token,基本底层的算子和软件都可以都可以蹬出来了。 一方面来看,Agent 已经可以解决从高性能算子的开发到框架优化的各种
15kwords14 mins.

# 前言 本篇是学习 MLIR 中的 Transform Dialect 的第四篇,本章主要讲的是 MLIR Transform Dialect 的进阶用法,核心围绕如何用更规范、更类型安全的方式编写 transform 操作,以及如何定义自己的 transform 类型。内容来自 MLIR 官方教程 《Chapter 3: More than Simple Transform Operations》。 相关链接: LLVM Project ,MLIR 官方文档,MLIR 官网教程, 《Chapter 0: A Primer on “Structured” Linalg Operations》
17kwords15 mins.

# 前言 本篇是学习 MLIR 中的 Transform Dialect 的第三篇,添加新的 Transformation 操作。这一章节主要讲了如何为 MLIR 的 Transform 方言添加一个简单的新变换操作。内容来自 MLIR 官方教程 《Chapter 2: Adding a Simple New Transformation Operation》 相关链接: LLVM Project ,MLIR 官方文档,MLIR 官网教程 。 作为初学者,错误在所难免,还望不吝赐教。 # 基本简介 在前一章节 《Chapter 1: Combining Existing Transforma
23kwords21 mins.

# 前言 本篇是学习 MLIR 中的 Transform Dialect 的第二篇,主要通过一个具体的 “全连接 + 偏置 + ReLU” 层例子,介绍了如何使用 Transform Dialect 来编写变换脚本。内容来自 MLIR 官方教程 《Chapter 1: Combining Existing Transformations》。 相关链接: LLVM Project ,MLIR 官方文档,MLIR 官网教程, 《Chapter 0: A Primer on “Structured” Linalg Operations》,【MLIR】Transform Dialect【0】保持计算结
15kwords13 mins.

# 前言 本篇是学习 MLIR 中的 Transform Dialect 的第一篇,主要讲解 MLIR 为何及如何保持计算结构。内容来自 MLIR 官方教程 《Chapter 0: A Primer on “Structured” Linalg Operations》。 相关链接: LLVM Project ,MLIR 官方文档,MLIR 官网教程, 《Chapter 0: A Primer on “Structured” Linalg Operations》。 作为初学者,错误在所难免,还望不吝赐教。 # 基本简介 本章节主要内容是在阐述 : 为什么编译器不直接把高级计算(如矩阵乘)转成低级
18kwords16 mins.

# 前言 现在开启 MLIR 学习系列。本篇是跟着 Toy 语言学习 MLIR 的第六篇,前述章节已经完整介绍了 toy 语言经 MLIR 降级到 llvm ir,并通过 JIT 进行编译执行的过程,本章节是教程中增添复合类型章节。前述内容请参考【MLIR】跟着 Toy 语言学习 MLIR【1】Toy 语言和 Toy Dialect,【MLIR】跟着 Toy 语言学习 MLIR【2】pattern 匹配和重写,【MLIR】跟着 Toy 语言学习 MLIR【3】通过接口实现通用转换。 相关链接: LLVM Project ,MLIR 官方文档,MLIR 官网教程,【编译器】使用 llvm 编译自
18kwords16 mins.

# 前言 现在开启 MLIR 学习系列。本篇是跟着 Toy 语言学习 MLIR 的第五篇,前述章节已经介绍到 toy dialect 降级到 Affine dialect,本章节主要介绍将其降级到 LLVM 及 Codegen 生成可执行文件的过程。前述内容请参考【MLIR】跟着 Toy 语言学习 MLIR【1】Toy 语言和 Toy Dialect,【MLIR】跟着 Toy 语言学习 MLIR【2】pattern 匹配和重写,【MLIR】跟着 Toy 语言学习 MLIR【3】通过接口实现通用转换,【MLIR】跟着 Toy 语言学习 MLIR【4】部分降级到低层方言。 相关链接: LLVM P
12kwords11 mins.

# 前言 现在开启 MLIR 学习系列。本篇是跟着 Toy 语言学习 MLIR 的第四篇,主要介绍高层级 toy dialect 降级到低层方言的过程,前述内容请参考【MLIR】跟着 Toy 语言学习 MLIR【1】Toy 语言和 Toy Dialect,【MLIR】跟着 Toy 语言学习 MLIR【2】pattern 匹配和重写,【MLIR】跟着 Toy 语言学习 MLIR【3】通过接口实现通用转换。 学习 MLIR 最好的方式还是照着官方教程来,但是只看 MLIR 官网教程,Ch1 到 Ch6,没有基础的话又让人学着有点吃力。现发现好多细节,不看教程认识不到,所以当前内容跟随官网教程。 相
15kwords14 mins.

# 前言 现在开启 MLIR 学习系列。本篇是跟着 Toy 语言学习 MLIR 的第三篇,主要介绍如何实现通过接口进行通用转换,前述内容请参考【MLIR】跟着 Toy 语言学习 MLIR【1】Toy 语言和 Toy Dialect,【MLIR】跟着 Toy 语言学习 MLIR【2】pattern 匹配和重写。 学习 MLIR 最好的方式还是照着官方教程来,但是只看 MLIR 官网教程,Ch1 到 Ch6,没有基础的话又让人学着有点吃力。现发现好多细节,不看教程认识不到,所以当前内容跟随官网教程。 相关链接: LLVM Project ,MLIR 官方文档,MLIR 官网教程,【编译器】使用 l
13kwords12 mins.

# 前言 现在开启 MLIR 学习系列。本篇是跟着 Toy 语言学习 MLIR 的第二篇,主要介绍 toy dialect 高层级方言的匹配重写,前述内容请参考【MLIR】跟着 Toy 语言学习 MLIR【1】Toy 语言和 Toy Dialect。 学习 MLIR 最好的方式还是照着官方教程来,但是只看 MLIR 官网教程,Ch1 到 Ch6,没有基础的话又让人学着有点吃力。所以本教程没有直接参照官网 Toy 教程,而是以 MLIR 工程的 toy 相关代码入手。欢迎参考。 相关链接: LLVM Project ,MLIR 官方文档,MLIR 官网教程,【编译器】使用 llvm 编译自定义语
16kwords15 mins.

# 前言 现在开启 MLIR 学习系列。本章介绍 Toy 语言和 Toy Dialect 这一步骤的转换。当然,是从 Toy AST 到 Toy Dialect 这一过程得转换。从 Toy 文本语言到 AST 这个转换过程,需要编译原理的知识和非常麻烦的词法分析器,且这个过程与 MLIR 无关,所以该文章不会包含这个过程。 学习 MLIR 最好的方式还是照着官方教程来,但是只看 MLIR 官网教程,Ch1 到 Ch6,没有基础的话又让人学着有点吃力。所以本教程没有直接参照官网 Toy 教程,而是以 MLIR 工程的 toy 相关代码入手。欢迎参考。 相关链接: LLVM Project ,ML
587words1 mins.

# It's A Rain Day 足球 雨天 足球 踢足球,开始于高中入学... # 血遗术之谜 推荐一下我的小说: 《血遗术之谜》 更偏向于严肃小说。写小说,开始于研究生时代。 # 另外 还有博客和 3D 建模。
1.3kwords1 mins.

# 凌乱 专门定好闹钟,在日出的时候爬到甲板上,拍一张海上日出的样子。 💬 "[我他妈去看海了,我他妈是一个人,海他妈也是一片海。]" 本科时足球课老师对我的评价是,速度快,真快!但现在是真跑不动了。毛毛雨的天气适合做各种事情,比如踢场足球,我的双色足球鞋很个性! 谁能明白倒在黎明前的痛苦。明明只差那么一点点,但结果是一样的。它带来的影响,远比一次又一次的失败要多得多。 失败模拟器不好玩。 💬 "[只有赢,才能治好我所有的阴郁和病痛。]" ————《百米。》 烟火,灿烂但短暂。 💬 "[失败总是贯穿人生始终。]"
16kwords14 mins.

# 前言 本篇介绍 Triton 实现的矩阵乘运算。本文结合 Triton 官方文档和官方 triton 矩阵乘实现方式,以绘图的方式介绍其加速算法和原理。比这对 NVIDIA GPU 架构理解尚浅,肯定存在理解偏差和错误,请批判性阅读,互相学习。 参考 Triton 中文官方文档、Triron 矩阵乘实现方式 作为初学者,错误在所难免,还望不吝赐教。 # 一点 CUDA 必备知识 # 流式多处理器 SM 一块 GPU 拥有多个流式多处理器 SM。 原子性绑定:一个线程块(Thread Block)中的所有线程,会被绑定到且仅绑定到同一个 SM 上执行。 一对多复用:一个 SM 在同一时刻
2.9kwords3 mins.

# 前言 本文介绍 FlashAttention。本文只关注 FlashAttention 前向推理部分的应用。 参考链接:Transformer 模型详解(图解最完整版) , Attention is All You Need,Pytorch 版本的 Transformer 实现、一文了解 Transformer 全貌(图解 Transformer)、大模型推理加速:看图学 KV Cache、手撕大模型|KVCache 原理及代码解析、FlashAttention 详解:为什么它能让大模型注意力计算又快又省显存?、Flash Attention 原理详解 (含代码讲解)、【手撕 LLM-Fl