摘要: 源码研习 — TVM中的IR设计与技术实现 # 一、关键问题 ## TVM中的 IR 是什么,架构设计上分几层? 解答:TVM的整体结构图如下: ![TVM架构图](https://raw.githubusercontent.com/tlc-pack/web-data/main/images/design/tvm_dyn_workflow.s 阅读全文
posted @ 2021-04-11 11:48 Aurelius84 阅读(5130) 评论(0) 推荐(1) 编辑
摘要: TensorFlow Runtime,简称 TFRT,它提供了统一的、可扩展的基础架构层,可以极致地发挥CPU多线程性能,支持全异步编程(无锁队列+异步化语义)。TFRT 可以减少开发、验证和部署企业级模型所需的时间。 阅读全文
posted @ 2020-12-25 20:08 Aurelius84 阅读(1621) 评论(0) 推荐(0) 编辑
摘要: 在深度学习模型训练中,每次迭代过程中都涉及到Tensor的创建和销毁,伴随着的是内存的频繁 `malloc`和`free`操作,可能对模型训练带来不必要的 overhead。 在主流的深度学习框架中,会借助 chunk 机制的内存池管理技术来避免这一点。通过实事先统一申请不同 chunk size 的内存,并记录到内存池中。创建一个Tensor时,若内存池中存在满足需求的可用内存,则直接分配。销毁一个Tensor时,并不马上`free`掉还给系统,而是标记为可用状态,放在内存池供下个Tensor使用。 阅读全文
posted @ 2020-12-08 21:22 Aurelius84 阅读(882) 评论(0) 推荐(0) 编辑
摘要: 【源码研读】MLIR Dialect 分层设计 > 以「疑问 - 求解」的形式来组织调研,此处记录整个过程。 ## 1. MLIR 中的 Dialect 是「分层」设计的么? 先问是不是,再谈为什么。从 [LLVM 社区](https://discourse.llvm.org/t/codegen-dialect-overview/2723) 可以 阅读全文
posted @ 2023-08-15 20:17 Aurelius84 阅读(553) 评论(1) 推荐(1) 编辑
摘要: 《Modern C++ Design》之上篇 > 如下内容是在看侯捷老师翻译的《Modern C++ Design》书籍时,整理的code和摘要,用于不断地温故知新。 # 第一章 ## 1. 运用 Template Template 参数实作 Policy Classes ```cpp template class CreationPolicy 阅读全文
posted @ 2023-08-04 17:38 Aurelius84 阅读(76) 评论(0) 推荐(0) 编辑
摘要: C++ 中 Concept-Model 概念模型 > 此文档参考自:https://gracicot.github.io/conceptmodel/2017/09/13/concept-model-part1.html ,觉得很有趣,就翻译过来了 # 一、Concept-Model:多态的新视角 面向对象编程大家都很熟悉,只需实现一个接口 `Int 阅读全文
posted @ 2023-06-14 20:59 Aurelius84 阅读(176) 评论(0) 推荐(0) 编辑
摘要: AI编译器CINN v.s TVM 中CodeGen 源码解读 > 如下的技术点梳理仅以「日常优化工作」为牵引点,涉及哪个模块,就具体去看哪个模块的代码。 # 一、CINN 框架 CINN 中`CodeGen`之后的代码编译主要交给了`Compiler`类来负责。核心的函数主要是: * `Build(ir::Module&, string& code)` * ` 阅读全文
posted @ 2023-06-08 09:47 Aurelius84 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 工作中如何做好技术积累 此博客内容也是三年前刚入职不久从Meituan的一个技术分享里二次整理的,常看常新。 一. 贵在坚持 知识更迭的很快,但是基础理论变化缓慢,二者是 道 和 象 的关系。众是世间万象,但万变不离其宗。要不断复习基础知识,打好基础。 二. 重视实践 个人的成长70%来自实践,20%来自学习,10%来自培 阅读全文
posted @ 2023-05-17 10:26 Aurelius84 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 工程师的十条精进原则 这篇博客内容是我三年前刚入职不久在其他地方浏览并二次整理的,如今三年岁月匆匆而过,回头再次 check 了下这十条原则,体会更加深刻。 一. Owner意识 体现在两个层面:一是认真负责的态度,二是积极主动的精神 认真负责是工作的底线。 首先,要对我们交付的结果负责。项目中每一个设计文档、每一行代码 阅读全文
posted @ 2023-05-17 10:08 Aurelius84 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 飞桨Paddle动转静@to_static技术设计 一、整体概要 在深度学习模型构建上,飞桨框架支持动态图编程和静态图编程两种方式,其代码编写和执行方式均存在差异: 动态图编程: 采用 Python 的编程风格,解析式地执行每一行网络代码,并同时返回计算结果。 静态图编程: 采用先编译后执行的方式。需先在代码中预定义完整的神经网络结构,飞桨框架会将神 阅读全文
posted @ 2023-05-12 11:01 Aurelius84 阅读(338) 评论(0) 推荐(1) 编辑
摘要: cuBlas API Launch Latency 耗时异常分析记录 一、背景 最近在做 AI 编译器生成 Kernel 支持 Bert 模型训练调优工作,在分析 bert 的timeline中发现,在每个 step 的前两个 cinn_instruction_run 之后,总是固定跟着一个 2.5 ms 左右的空白。但 HOST 端其实很早就 emit 了CUDA 阅读全文
posted @ 2023-05-12 10:45 Aurelius84 阅读(199) 评论(0) 推荐(0) 编辑
摘要: AI 编译器CINN中的OpLowering优化Pass 一、Lower 主逻辑 在 OpLower::Lower() 接口中,主要分为两大类: Elementwise类,主要涉及的 OpPattern 包括:kElementwise 、kBroadcast 、kInjective Reduce 类,主要涉及的OpPattern包括:kReduction 阅读全文
posted @ 2023-05-12 10:17 Aurelius84 阅读(71) 评论(0) 推荐(1) 编辑
摘要: Triton 源码初步研读 一、核心接口形态 def jit( fn: Optional[T] = None, *, version=None, do_not_specialize: Optional[Iterable[int]] = None, debug: Optional[bool] = None, ) -> Union 阅读全文
posted @ 2023-05-06 10:08 Aurelius84 阅读(1038) 评论(0) 推荐(0) 编辑