- 博客(245)
- 资源 (72)
- 收藏
- 关注
原创 AI 编译器学习笔记之十七 -- 算法改进
1、矩阵求逆看SHAPE:小SHAPE可以考虑用高斯消元法,用vector计算;大SHAPE可以考虑用LU分解,能用上CUBE。注:SHAPE大了后,保证精度也是很大的挑战。
2025-04-03 10:59:52
338
原创 AI 编译器学习笔记之十六 -- TVM
是 TVM 的 Tensor Expression 层(高层次算子描述)中的调度单元,用于表示计算图中的某个操作及其优化策略(如循环展开、并行化)。是 TVM 的 TensorIR 层(低层级中间表示)中的基本调度单元,直接对应硬件执行逻辑(如循环嵌套、内存访问)1、使用tvm::Dump调试打印,比如 tvm::Dump(sch->stages)在转换为 TIR 时会生成一个对应的。
2025-03-04 22:10:50
407
转载 (一)大话深度学习编译器中的自动调优·前言
深度学习计算框架中的自动化调优,尤其是高性能算子自动生成是这几年非常火的话题。这个系列的文章主要是对之前看到的零碎信息做个简单的总结。尽管,由于有些方向比较艰深,笔者懂得十分浅薄,文章在很多方面也只能蜻蜓点水。这是第一篇,权当是个引子。问题与挑战深度神经网络(DNN)已成为了当代AI的主流方法并在众多领域取得了前所未有的成功,但它巨大的计算量也给AI产品的落地带来了巨大的挑战。另一方面,计算机体系架构的发展也随着登纳德缩放定律(Dennard scaling)和摩尔定律(Moore’s Law)的逐渐
2025-01-02 19:28:54
102
原创 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
449
原创 AI 编译器学习笔记之十二 -- tbe 开发
1、进入调试模式 tik_instance = tik.Tik(disable_debug=False),参考。
2024-11-11 19:39:37
203
原创 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
316
原创 AI 编译器学习笔记之六 -- 基础知识、概念
1、激活函数:深度学习—激活函数详解(Sigmoid、tanh、ReLU、ReLU6及变体P-R-Leaky、ELU、SELU、Swish、Mish、Maxout、hard-sigmoid、hard-swish)-优快云博客
2024-10-18 16:24:56
361
原创 AI 编译器学习笔记之四 -- cann接口使用
2、采用优先使用msprof, 但是需要安装Ascend-cann-tookit开发套件包。1、cann迭代更新非常快,因此查阅时注意版本号的选择。
2024-10-15 10:19:22
511
原创 conda 容器学习笔记之一 -- 基础环境配置
1、容器瘦身导致部分应用缺少,需要在非容器环境下部署环境。但为避免破坏现有环境,现有使用conda环境进行隔离管理。创建:conda create -n tts python==3.10.0。
2024-10-14 13:04:24
326
原创 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
850
原创 LLVM 编译器学习笔记之六十五 -- GVN(global value number)
1、实现方法:GVN算法及LLVM中的实现 - 薛奇星 - 20210217 - PLCT实验室_哔哩哔哩_bilibili
2023-06-17 15:56:05
1288
转载 ARM64 指令集架构学习之二--ARM与RISC-V的向量扩展比较
带有向量指令的微处理器将是未来的大趋势。为什么?因为自动驾驶、语音识别、图像识别都是基 于机器学习,并且机器学习都是关于矩阵和向量的。 但这不是唯一的原因。自从我们半官方地宣布摩尔定律结束以来,我们一直在拼命寻找更多的性 能。在微处理器设计的黄金旧时代,我们可以容易地每年将CPU的频率翻倍,每个人都很开心。这 个绝妙的老把戏结束了。 性能的提高一直停滞不前,因此需要以不同的方式利用更多的晶体管进行并行处理,无论是多核、向量处理还是无 序执行。 现在我们耍了几千种不同的把戏找寻更多的...
2022-03-01 15:16:56
2993
原创 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
2928
原创 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
699
原创 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
369
原创 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
865
原创 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
4607
原创 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
1188
原创 LLVM 编译器学习笔记之三十 -- 基本快BasicBlock的操作
1、SplitBlock封装了splitBasciBlock,内部调用splitBasciBlock,但是他们的功能是不等价的 a)splitBasciBlock 纯粹的将一个BB,按照指定的iterator I拆分成两个BB(无条件跳转)
2021-10-09 11:33:24
1047
原创 LLVM 编译器学习笔记之二十九 -- 控制流程CFG
1、查看控制流图的方法a) 对于中间表达的 *.ll 文件opt -dot-cfg before-indvars.lldot -Tpng .p.dot -o tmp.pngb) 在调试过程中,可以使用F.viewCFG()接口先获取相应的*.dot文件,之后雷同 参考:自动向量化调试过程查看CFG流图_CanaanLeeN的博客-优快云博客...
2021-09-15 11:36:26
1391
转载 LLVM 编译器学习笔记之二十八 -- 经常被误解的GetElementPtr(GEP)指令
参考https://llvm.liuxfe.com/docs/get-element-ptr
2021-08-20 10:07:43
1894
原创 用户代码修改相关的性能优化方法 -- 二维指针和二维数组的访问效率
示例代码:二维数组或者一维结构体指针访存效率高于二维指针#define N 10int aa[N][3] = {0,1,2,3,4,5,5,6,67};int bb[3*N] = {0,1,2,3,4,5,5,6,67};int init (int ** &matrix, int * const &array, int n) { matrix = (int **)malloc (sizeof (int *) * N); for (int i=0; i&
2021-08-12 19:42:48
252
原创 LLVM 编译器学习笔记之二十七 -- EarlyCSE, PRE, LICM, hoist, Sink
1、__attribute__((__aligned__)) 的正确使用方法,参考https://stackoverflow.com/questions/10951039/specifying-64-bit-alignment,注意并不是写在结构体定义的上一行struct foo { int a, b, c;} __attribute__((__aligned__(8))); // aligned to 8-byte (64-bit) boundary.........
2021-08-11 11:52:20
1902
1
原创 mpirun 学习验证
1、测试用例基础mpicxx -g -O3 -DLAMMPS_GZIP -DLMP_USER_OMP -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 demo.cppmpirun --bind-to core --allow-run-as-root -np 6 --mca btl ^openib ./a.out#include <mpi.h>#include <stdio.h>int main( int argc, char..
2021-07-20 16:26:44
3242
1
原创 C++语法学习笔记之三 -- 源码分析 std::vector<bool> 设计,学会合理使用
但凡上网搜索下关于 std::vector<bool> 的讨论,基本都是吐槽它的实现,分不清这么设计是feature还是bug。此外,由于 std::vector<bool> 也经常应用在leetcode刷题中。因此,本期就来聊下 它的底层实现,来帮助你正确的使用它。前言std::vector<bool>,是类 sd::vector<T,std::allocator<T>> 的部分特化,为了节省内存,内部实际上是按bit来表征bool类型。从
2021-05-30 09:23:26
1535
原创 【git 操作技巧】大文件使用git lfs
1、git lfs可以从https://github.com/git-lfs/git-lfs/releases下载安装(注意x86服务器版本),使用方法类似git如果出错提示certificate signed by unknown authority,请参考https://github.com/git-lfs/git-lfs/issues/276#issuecomment-98754786,配置git config http.sslverify false...
2021-04-20 16:46:49
356
算法技术手册(机械工业出版社)
2011-03-24
模式匹配算法的原理及应用
2011-03-24
高速电路设计与仿真分析 Cadence实例设计详解
2011-03-23
gdb-7.2.tar.bz2
2011-03-23
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
ftp_base_on_UDP
2009-07-31
WinAVR-20040720-install.zip(编译器安装包)
2009-06-14
VC_与Matlab混合编程方法剖析
2009-05-29
用C++语言手工编写的词法分析器
2009-05-29
explore2fs-1.00pre6
2009-05-29
Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup-en-x64.7z
2019-09-08
为知笔记_2015.02.27
2015-03-08
Debuggers.zip
2015-01-14
windows 动态库相关问题FAQ
2013-02-25
ProcessExplorer
2013-02-24
字符识别源码
2012-08-04
[python] 为什么相同的脚本在不同目录下执行有不同的现象
2024-11-02
[python] 路径影响了import 执行
2024-11-02
将执行命令放到shell脚本后结果异常
2023-04-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人