- 博客(267)
- 资源 (72)
- 收藏
- 关注
原创 mlir 编译器学习笔记之十四 -- cpu算子自动生成
,降级为显式的、带有仿射(Affine)访存模式的循环嵌套(方言中声明式的、硬件无关的线性代数操作(如。
2026-09-01 12:01:49
195
原创 mlir 编译器学习笔记之十三 -- 算子切分tiling
1、符号推导:标记算子的公共轴(相同的符号),具体方法:为每个 tensor 的每个维度分配一个符号(Symbol,本质是 `int32_t`),然后通过 Union-Find 数据结构记录**哪些维度必须相等。- **迭代空间(Iteration Domain)**:Op 的计算可以用一组嵌套循环描述,每个循环维度有偏移(offset)、规模(size)、步长(stride)- **分块(Tiling)**:将完整迭代空间切分为若干子空间,每次只处理一个子空间(tile。
2026-08-14 14:53:36
196
原创 mlir 编译器学习笔记之十二 -- 生成c语言
基于emitc方言转换生成c语言代码:mlir-translate --mlir-to-cpp:MLIR 上游自带的、处理标准 emitc 方言,输出 C++ 代码。组合emitc.expression的目的是让C生成复合表达式:eg:a = b + c;d = a * e;1、emit方言作为输入的层次结构:module->function->expression->operation。
2026-08-13 12:01:10
199
原创 mlir 编译器学习笔记之十一 -- 精度pass功能区分
DCE 删除: op.getEffects().empty() && op.isSpeculatable() && op.hasNoUsers()CSE 替换: op.isDuplicateOfExisting() && op.getEffects().empty()1、DCE 删除 / CSE 替换。
2026-06-11 09:39:54
215
原创 硬件架构之一 -- cpu/ai 芯片比对
ai: 片上sram内存(L1)为主,算子一般执行很耗时,而且张量比较大,寄存器难以放下。cpu/dsp: 寄存器为主,指令本身执行完成就几个cycles的事情。
2026-06-06 08:54:21
250
原创 mlir 编译器学习笔记之九 -- 基于emitc后端生成
方案1、在mlir中使用标准的emitc转换生成,比如OpCommHead.opType = TAU_TYPE表达。方案2、直接将输出操作拼接,即依次直接导入数据流。
2026-05-20 09:09:48
154
原创 AI 编译器学习笔记之二十二 -- MOE模型
1、one_hot编码:torch.nn.functional.one_hot(top_k_index, num_classes=self.num_experts)本文介绍MOE中常见使用的一些算子的功能及伪代码。
2026-05-12 10:54:22
45
原创 编程设计之三 -- UML
继承 Generalization 空心三角 + 实线 子类 → 父类。关联 Association 普通箭头 + 实线 使用方 → 被使用方。依赖 Dependency 普通箭头 + 虚线 依赖方 → 被依赖方。实现 Realization 空心三角 + 虚线 实现类 → 接口。聚合 Aggregation 空心菱形 + 实线 部分 → 整体。关系类型 英文 符号 箭头方向。
2026-04-23 19:01:32
97
原创 编程设计之一 -- 算法实现
它会把所有可能的子问题都求解出来,通过记录每个子问题的状态,从这些子问题中推导出原问题的解。关键特征:有重叠子问题。它会保存子问题的计算结果,避免重复计算,并利用这些结果进行递推。关键特征:无后效性。即只根据当前已有的信息做出选择,一旦做出选择,就不会改变。性质(即一个问题的最优解包含其子问题的最优解)选出在当前看来是最好的选择(局部最优解)1、贪心 和动态规划都遵循。:局部最优,步步为营。:全面考虑,记录备选。
2026-02-14 16:32:07
212
原创 triton 开发实践基础 ---
1、weight.shape[0] 可以直接传给算子做参数,却不可直接赋值给一个独立的变量。2、可以定义全局变量。
2026-01-13 09:12:20
334
原创 mlir 编译器学习笔记之六 -- 经典实现
1、利用 重载方法: val.getDefiningOp<emitc::CallOpaqueOp>() 和 val.getDefiningOp()template <typename OpTy> // 模板版本 - 调用基础版本,增加类型检查。() const { // 基础版本。
2025-11-06 09:45:03
303
原创 mlir 编译器学习笔记之五 -- 开发避坑
for (auto input : op.getDpsInputs()) { // 缓存了 [A, A, A]// 第一次迭代:input = A,替换为 A_conv → 操作数变为 [A_conv, A, A]// 第一次迭代:input = A,替换为 A_conv → 操作数变为 [A_conv, A, A]// 第二次迭代:重新获取 op.getDpsInputs()[1] = A_conv (更新后的值)// 假设原始操作数: [A, A, A] (同一个值A被用了三次)
2025-11-05 16:46:33
342
原创 mlir 编译器学习笔记之四 -- 调度
当前指令C: R4 = R1 * 2 // 什么时候可以开始?==> R1 就绪,即endTime。前驱指令P: R1 = R2 + R3 // LiveRange: [10, 12]1、指令的活跃区间 LiveRange [startTime, endTime]startTime: 节点开始执行的时间(指令被发射到功能单元)endTime: 节点结果就绪的时间(指令执行完成,结果可用)
2025-11-04 14:46:17
234
原创 AI 编译器学习笔记之二十一 -- 模型
LLaMA这样的Transformer模型确实由完全相同的Decoder层堆叠而成(比如LLaMA 2-7B有32层);
2025-09-28 11:22:42
261
原创 AI 编译器学习笔记之十九-- 动态shape
在模型初始化时,就为整个计算过程分配好所有需要的内存。整个运行期间零分配开销;动态shape不支持。a) 静态Shape中,最极致的优化是。for循环分块确保单次迭代够用。
2025-09-08 18:51:39
283
原创 mlir 编译器学习笔记之一 -- 调试
1、通过--mlir-print-ir-before-all可以找到开始引入错误的pass, 然后可以将错误pass前的IR保存即可验证单个pass的功能。
2025-08-27 10:32:32
391
原创 C++语法学习笔记之六 --- 生命周期、作用域
当它离开作用域(或被销毁)时,会自动释放所管理的对象。转移了所有权,避免了局部变量销毁导致的对象释放(当前代码通过。1、std::unique_ptr 作用域。对象的生命周期一致),指针就会一直有效)的生命周期足够长(通常与。
2025-08-19 11:05:11
182
原创 AI 编译器学习笔记之十七 -- 算法改进
1、矩阵求逆看SHAPE:小SHAPE可以考虑用高斯消元法,用vector计算;大SHAPE可以考虑用LU分解,能用上CUBE。注:SHAPE大了后,保证精度也是很大的挑战。
2025-04-03 10:59:52
476
原创 AI 编译器学习笔记之十六 -- TVM
是 TVM 的 Tensor Expression 层(高层次算子描述)中的调度单元,用于表示计算图中的某个操作及其优化策略(如循环展开、并行化)。是 TVM 的 TensorIR 层(低层级中间表示)中的基本调度单元,直接对应硬件执行逻辑(如循环嵌套、内存访问)1、使用tvm::Dump调试打印,比如 tvm::Dump(sch->stages)在转换为 TIR 时会生成一个对应的。
2025-03-04 22:10:50
693
转载 (一)大话深度学习编译器中的自动调优·前言
深度学习计算框架中的自动化调优,尤其是高性能算子自动生成是这几年非常火的话题。这个系列的文章主要是对之前看到的零碎信息做个简单的总结。尽管,由于有些方向比较艰深,笔者懂得十分浅薄,文章在很多方面也只能蜻蜓点水。这是第一篇,权当是个引子。问题与挑战深度神经网络(DNN)已成为了当代AI的主流方法并在众多领域取得了前所未有的成功,但它巨大的计算量也给AI产品的落地带来了巨大的挑战。另一方面,计算机体系架构的发展也随着登纳德缩放定律(Dennard scaling)和摩尔定律(Moore’s Law)的逐渐
2025-01-02 19:28:54
359
原创 AI 编译器学习笔记之十三 -- Pytorch 特性实现
1、实现torch中的平铺特性 tile 的代码实现:Add support for aten.tile operator(not e2e support) by georgeuser · Pull Request #2246 · llvm/torch-mlir (github.com)
2024-11-25 21:22:50
599
原创 AI 编译器学习笔记之十二 -- tbe 开发
1、进入调试模式 tik_instance = tik.Tik(disable_debug=False),参考。
2024-11-11 19:39:37
487
原创 AI 编译器学习笔记之十一 -- 网络结构可视化torchsummary库
问题一:使用torchsummary查看网络结构时报错:AttributeError: ‘list’ object has no attribute ‘size’pip install torch-summary==1.4.4 # 安装升级版本torch-summary。pip uninstall torchsummary # 卸载原来的torchsummary库。-summary库是torchsummary的加强版,解决方法:安装torch-summary。
2024-11-02 19:42:39
521
原创 AI 编译器学习笔记之六 -- 基础知识、概念
1、激活函数:深度学习—激活函数详解(Sigmoid、tanh、ReLU、ReLU6及变体P-R-Leaky、ELU、SELU、Swish、Mish、Maxout、hard-sigmoid、hard-swish)-CSDN博客
2024-10-18 16:24:56
518
原创 AI 编译器学习笔记之四 -- cann接口使用
2、采用优先使用msprof, 但是需要安装Ascend-cann-tookit开发套件包。1、cann迭代更新非常快,因此查阅时注意版本号的选择。
2024-10-15 10:19:22
1249
原创 conda 容器学习笔记之一 -- 基础环境配置
1、容器瘦身导致部分应用缺少,需要在非容器环境下部署环境。但为避免破坏现有环境,现有使用conda环境进行隔离管理。创建:conda create -n tts python==3.10.0。
2024-10-14 13:04:24
563
原创 LLVM 编译器学习笔记之六十七 -- 浮点优化-ffast-math
-fno-honor-infinities-fno-honor-nans-fno-math-errno-ffinite-math-fassociative-math-freciprocal-math-fno-signed-zeros-fno-trapping-math-ffp-contract=fast
2023-07-31 11:42:38
1167
原创 LLVM 编译器学习笔记之六十五 -- GVN(global value number)
1、实现方法:GVN算法及LLVM中的实现 - 薛奇星 - 20210217 - PLCT实验室_哔哩哔哩_bilibili
2023-06-17 15:56:05
1832
explore2fs-1.00pre6
2009-05-29
ftp_base_on_UDP
2009-07-31
用C++语言手工编写的词法分析器
2009-05-29
kakadu2.2.3和openjpeg1.3两开源图像压缩软件的性能测试比较
2010-06-27
Computation of 2700 billion decimal digits of Pi using a Desktop Computer
2010-06-27
使用 Qt 和OpenGL 创建跨平台可视化 UI
2010-06-27
WinAVR-20040720-install.zip(编译器安装包)
2009-06-14
VC_与Matlab混合编程方法剖析
2009-05-29
模式匹配算法的原理及应用
2011-03-24
高速电路设计与仿真分析 Cadence实例设计详解
2011-03-23
Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup-en-x64.7z
2019-09-08
gdb-7.2.tar.bz2
2011-03-23
ProcessExplorer
2013-02-24
字符识别源码
2012-08-04
为知笔记_2015.02.27
2015-03-08
算法技术手册(机械工业出版社)
2011-03-24
Debuggers.zip
2015-01-14
windows 动态库相关问题FAQ
2013-02-25
[python] 为什么相同的脚本在不同目录下执行有不同的现象
2024-11-02
[python] 路径影响了import 执行
2024-11-02
将执行命令放到shell脚本后结果异常
2023-04-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅