摘要: 《Modern C++ Design》之上篇 > 如下内容是在看侯捷老师翻译的《Modern C++ Design》书籍时,整理的code和摘要,用于不断地温故知新。 # 第一章 ## 1. 运用 Template Template 参数实作 Policy Classes ```cpp template class CreationPolicy 阅读全文
posted @ 2023-08-04 17:38 Aurelius84 阅读(171) 评论(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 阅读(286) 评论(0) 推荐(0) 编辑
摘要: AI编译器CINN v.s TVM 中CodeGen 源码解读 > 如下的技术点梳理仅以「日常优化工作」为牵引点,涉及哪个模块,就具体去看哪个模块的代码。 # 一、CINN 框架 CINN 中`CodeGen`之后的代码编译主要交给了`Compiler`类来负责。核心的函数主要是: * `Build(ir::Module&, string& code)` * ` 阅读全文
posted @ 2023-06-08 09:46 Aurelius84 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 工作中如何做好技术积累 此博客内容也是三年前刚入职不久从Meituan的一个技术分享里二次整理的,常看常新。 一. 贵在坚持 知识更迭的很快,但是基础理论变化缓慢,二者是 道 和 象 的关系。众是世间万象,但万变不离其宗。要不断复习基础知识,打好基础。 二. 重视实践 个人的成长70%来自实践,20%来自学习,10%来自培 阅读全文
posted @ 2023-05-17 10:26 Aurelius84 阅读(217) 评论(0) 推荐(1) 编辑
摘要: 工程师的十条精进原则 这篇博客内容是我三年前刚入职不久在其他地方浏览并二次整理的,如今三年岁月匆匆而过,回头再次 check 了下这十条原则,体会更加深刻。 一. Owner意识 体现在两个层面:一是认真负责的态度,二是积极主动的精神 认真负责是工作的底线。 首先,要对我们交付的结果负责。项目中每一个设计文档、每一行代码 阅读全文
posted @ 2023-05-17 10:08 Aurelius84 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 飞桨Paddle动转静@to_static技术设计 一、整体概要 在深度学习模型构建上,飞桨框架支持动态图编程和静态图编程两种方式,其代码编写和执行方式均存在差异: 动态图编程: 采用 Python 的编程风格,解析式地执行每一行网络代码,并同时返回计算结果。 静态图编程: 采用先编译后执行的方式。需先在代码中预定义完整的神经网络结构,飞桨框架会将神 阅读全文
posted @ 2023-05-12 11:01 Aurelius84 阅读(476) 评论(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:44 Aurelius84 阅读(342) 评论(0) 推荐(0) 编辑
摘要: AI 编译器CINN中的OpLowering优化Pass 一、Lower 主逻辑 在 OpLower::Lower() 接口中,主要分为两大类: Elementwise类,主要涉及的 OpPattern 包括:kElementwise 、kBroadcast 、kInjective Reduce 类,主要涉及的OpPattern包括:kReduction 阅读全文
posted @ 2023-05-12 10:17 Aurelius84 阅读(123) 评论(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 阅读(2083) 评论(0) 推荐(0) 编辑
摘要: TVM 中的 Profiler 设计 一、基本用法 首先看 Profiler 的用法: with ms.Profiler() as profiler: # .... 用户代码 print("Tuning Time:") print(profiler.table()) 二、前端接口设计 其中 Profiler 类的设计是绑定和映射到了 C 阅读全文
posted @ 2023-05-06 09:50 Aurelius84 阅读(207) 评论(0) 推荐(0) 编辑