- 博客(258)
- 资源 (72)
- 收藏
- 关注
原创 算法实现
它会把所有可能的子问题都求解出来,通过记录每个子问题的状态,从这些子问题中推导出原问题的解。关键特征:有重叠子问题。它会保存子问题的计算结果,避免重复计算,并利用这些结果进行递推。关键特征:无后效性。即只根据当前已有的信息做出选择,一旦做出选择,就不会改变。性质(即一个问题的最优解包含其子问题的最优解)选出在当前看来是最好的选择(局部最优解)1、贪心 和动态规划都遵循。:局部最优,步步为营。:全面考虑,记录备选。
2026-02-14 16:32:07
177
原创 triton 开发实践基础 ---
1、weight.shape[0] 可以直接传给算子做参数,却不可直接赋值给一个独立的变量。2、可以定义全局变量。
2026-01-13 09:12:20
258
原创 mlir 编译器学习笔记之六 -- 经典实现
1、利用 重载方法: val.getDefiningOp<emitc::CallOpaqueOp>() 和 val.getDefiningOp()template <typename OpTy> // 模板版本 - 调用基础版本,增加类型检查。() const { // 基础版本。
2025-11-06 09:45:03
252
原创 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
286
原创 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
186
原创 AI 编译器学习笔记之二十一 -- 模型
LLaMA这样的Transformer模型确实由完全相同的Decoder层堆叠而成(比如LLaMA 2-7B有32层);
2025-09-28 11:22:42
209
原创 AI 编译器学习笔记之十九-- 动态shape
在模型初始化时,就为整个计算过程分配好所有需要的内存。整个运行期间零分配开销;动态shape不支持。a) 静态Shape中,最极致的优化是。for循环分块确保单次迭代够用。
2025-09-08 18:51:39
226
原创 mlir 编译器学习笔记之一 -- 调试
1、通过--mlir-print-ir-before-all可以找到开始引入错误的pass, 然后可以将错误pass前的IR保存即可验证单个pass的功能。
2025-08-27 10:32:32
337
原创 C++语法学习笔记之六 --- 生命周期、作用域
当它离开作用域(或被销毁)时,会自动释放所管理的对象。转移了所有权,避免了局部变量销毁导致的对象释放(当前代码通过。1、std::unique_ptr 作用域。对象的生命周期一致),指针就会一直有效)的生命周期足够长(通常与。
2025-08-19 11:05:11
162
原创 AI 编译器学习笔记之十七 -- 算法改进
1、矩阵求逆看SHAPE:小SHAPE可以考虑用高斯消元法,用vector计算;大SHAPE可以考虑用LU分解,能用上CUBE。注:SHAPE大了后,保证精度也是很大的挑战。
2025-04-03 10:59:52
452
原创 AI 编译器学习笔记之十六 -- TVM
是 TVM 的 Tensor Expression 层(高层次算子描述)中的调度单元,用于表示计算图中的某个操作及其优化策略(如循环展开、并行化)。是 TVM 的 TensorIR 层(低层级中间表示)中的基本调度单元,直接对应硬件执行逻辑(如循环嵌套、内存访问)1、使用tvm::Dump调试打印,比如 tvm::Dump(sch->stages)在转换为 TIR 时会生成一个对应的。
2025-03-04 22:10:50
651
转载 (一)大话深度学习编译器中的自动调优·前言
深度学习计算框架中的自动化调优,尤其是高性能算子自动生成是这几年非常火的话题。这个系列的文章主要是对之前看到的零碎信息做个简单的总结。尽管,由于有些方向比较艰深,笔者懂得十分浅薄,文章在很多方面也只能蜻蜓点水。这是第一篇,权当是个引子。问题与挑战深度神经网络(DNN)已成为了当代AI的主流方法并在众多领域取得了前所未有的成功,但它巨大的计算量也给AI产品的落地带来了巨大的挑战。另一方面,计算机体系架构的发展也随着登纳德缩放定律(Dennard scaling)和摩尔定律(Moore’s Law)的逐渐
2025-01-02 19:28:54
297
原创 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
571
原创 AI 编译器学习笔记之十二 -- tbe 开发
1、进入调试模式 tik_instance = tik.Tik(disable_debug=False),参考。
2024-11-11 19:39:37
445
原创 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
485
原创 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
502
原创 AI 编译器学习笔记之四 -- cann接口使用
2、采用优先使用msprof, 但是需要安装Ascend-cann-tookit开发套件包。1、cann迭代更新非常快,因此查阅时注意版本号的选择。
2024-10-15 10:19:22
1189
原创 conda 容器学习笔记之一 -- 基础环境配置
1、容器瘦身导致部分应用缺少,需要在非容器环境下部署环境。但为避免破坏现有环境,现有使用conda环境进行隔离管理。创建:conda create -n tts python==3.10.0。
2024-10-14 13:04:24
526
原创 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
1102
原创 LLVM 编译器学习笔记之六十五 -- GVN(global value number)
1、实现方法:GVN算法及LLVM中的实现 - 薛奇星 - 20210217 - PLCT实验室_哔哩哔哩_bilibili
2023-06-17 15:56:05
1725
转载 ARM64 指令集架构学习之二--ARM与RISC-V的向量扩展比较
带有向量指令的微处理器将是未来的大趋势。为什么?因为自动驾驶、语音识别、图像识别都是基 于机器学习,并且机器学习都是关于矩阵和向量的。 但这不是唯一的原因。自从我们半官方地宣布摩尔定律结束以来,我们一直在拼命寻找更多的性 能。在微处理器设计的黄金旧时代,我们可以容易地每年将CPU的频率翻倍,每个人都很开心。这 个绝妙的老把戏结束了。 性能的提高一直停滞不前,因此需要以不同的方式利用更多的晶体管进行并行处理,无论是多核、向量处理还是无 序执行。 现在我们耍了几千种不同的把戏找寻更多的...
2022-03-01 15:16:56
3485
原创 C++语法学习笔记之四 -- 字符串string相关
1、C++ 17新引入std::string_view使用介绍,std::string_view是原始字符串的视图,如果在查看std::string_view的同时修改了字符串,或者字符串被消毁,那么将是未定义的行为。std::string_view比std::string的性能要高很多,因为每个std::string都独自拥有一份字符串的拷贝,而std::string_view只是记录了自己对应的字符串的指针和偏移位置。当我们在只是查看字符串的函数中可以直接使用std::string_view来代替
2022-01-27 20:34:23
2979
原创 gcc 编译器学习笔记之二 -- dump 中关键信息解读
1、直接分析gcc汇编确认其是否存在runtime的检查是比较困难的,因此可以对向量化patch的dump进行检查,是否存在create runtime check?missed: versioning for alias required: can't determine dependence between x[k_27] and x[i_28]consider run-time aliasing test between x[k_27] and x[i_28]create runtim.
2022-01-26 10:44:22
776
原创 LLVM 编译器学习笔记之三十九-- 注释规则采用Doxygen语法
Doxygen: Doxygenis used generate documentation from source code, 对应的语法规则https://www.doxygen.nl/manual/commands.html#cmdp,常见应用1、给函数参数换一种字体显示格式,使用\p
2022-01-06 10:06:57
428
原创 LLVM 编译器学习笔记之三十八-- STL接口使用
1、set 底层结构是红黑树,有去重特点,参考C++ STL中set是如何判断两个结构体相等的? - 知乎 SetVector 同时维护Vector及Set来保证访问顺序的唯一性,比如对象是一个指针是,如果只是使用SmallPtrSet则因为对象分配的指针地址可能存在差异,导致对象的遍历不唯一。如果用SetVector,则因为插入时会同时往Vector及Set中插入,而Vector是有序的,因此迭代器遍历Vector能保证遍历顺序的一致性,参考LLVM: LLVM: llvm::SmallSet...
2021-12-27 09:41:55
954
原创 LLVM 编译器学习笔记之三十六-- 指令调度Instruction scheduling
1、参考Instruction scheduling in LLVM - 知乎,在中后端均存在指令调度指令调度模型2、在llvm12->llvm14 中Machine Instruction Scheduler有个patch增强了load/store指令的合并,也就是指令调度不仅仅只是改变指令的顺序,该优化类似gcc中的store-merge优化.....................................................................
2021-12-01 12:05:17
5280
原创 LLVM 编译器学习笔记之三十四-- SSA
1、llvm中有种特殊的lcssa (Loop Close SSa), 参考LLVM Loop Terminology (and Canonical Forms) — LLVM 13 documentation一个lcssa的形式是PHI中只有一个结点,因此是冗余的,只是方便循环的优化,%add673.lcssa = phi i32 [ %add673, %for.body639 ]...
2021-11-24 18:36:00
1369
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订阅