05 2023 档案
摘要:
此博客内容也是三年前刚入职不久从Meituan的一个技术分享里二次整理的,常看常新。 一. 贵在坚持 知识更迭的很快,但是基础理论变化缓慢,二者是 道 和 象 的关系。众是世间万象,但万变不离其宗。要不断复习基础知识,打好基础。 二. 重视实践 个人的成长70%来自实践,20%来自学习,10%来自培
阅读全文

摘要:
这篇博客内容是我三年前刚入职不久在其他地方浏览并二次整理的,如今三年岁月匆匆而过,回头再次 check 了下这十条原则,体会更加深刻。 一. Owner意识 体现在两个层面:一是认真负责的态度,二是积极主动的精神 认真负责是工作的底线。 首先,要对我们交付的结果负责。项目中每一个设计文档、每一行代码
阅读全文

摘要:
一、整体概要 在深度学习模型构建上,飞桨框架支持动态图编程和静态图编程两种方式,其代码编写和执行方式均存在差异: 动态图编程: 采用 Python 的编程风格,解析式地执行每一行网络代码,并同时返回计算结果。 静态图编程: 采用先编译后执行的方式。需先在代码中预定义完整的神经网络结构,飞桨框架会将神
阅读全文

摘要:
一、背景 最近在做 AI 编译器生成 Kernel 支持 Bert 模型训练调优工作,在分析 bert 的timeline中发现,在每个 step 的前两个 cinn_instruction_run 之后,总是固定跟着一个 2.5 ms 左右的空白。但 HOST 端其实很早就 emit 了CUDA
阅读全文

摘要:
一、Lower 主逻辑 在 OpLower::Lower() 接口中,主要分为两大类: Elementwise类,主要涉及的 OpPattern 包括:kElementwise 、kBroadcast 、kInjective Reduce 类,主要涉及的OpPattern包括:kReduction
阅读全文

摘要:
一、核心接口形态 def jit( fn: Optional[T] = None, *, version=None, do_not_specialize: Optional[Iterable[int]] = None, debug: Optional[bool] = None, ) -> Union
阅读全文

摘要:
一、基本用法 首先看 Profiler 的用法: with ms.Profiler() as profiler: # .... 用户代码 print("Tuning Time:") print(profiler.table()) 二、前端接口设计 其中 Profiler 类的设计是绑定和映射到了 C
阅读全文

摘要:
采用 「问-答」形式记录研读 CINN 开源框架的笔记 Q:CINN中子图编译的入口是在哪里? for (const auto& node_vec : clusters) { // < 逐个遍历每个子图 // Classify var node to inputs, outputs, and int
阅读全文

摘要:
参考自 Nvidia cuRand 官方 API 文档 一、具体使用场景 如下是是在 dropout 优化中手写的 uniform_random 的 Kernel: #include <cuda_runtime.h> #include <curand_kernel.h> __device__ inl
阅读全文
