原创 【源碼研讀】MLIR Dialect 分層設計

以「疑問 - 求解」的形式來組織調研,此處記錄整個過程。 1. MLIR 中的 Dialect 是「分層」設計的麼? 先問是不是,再談爲什麼。從 LLVM 社區 可以看出,至少在做 Codegen 時,是採用了「分層」的思想來逐步 Lo

原创 《Modern C++ Design》之上篇

如下內容是在看侯捷老師翻譯的《Modern C++ Design》書籍時,整理的code和摘要,用於不斷地溫故知新。 第一章 1. 運用 Template Template 參數實作 Policy Classes template <t

原创 C++ 中 Concept-Model 概念模型

此文檔參考自:https://gracicot.github.io/conceptmodel/2017/09/13/concept-model-part1.html ,覺得很有趣,就翻譯過來了 一、Concept-Model:多態的新視

原创 AI編譯器CINN v.s TVM 中CodeGen 源碼解讀

如下的技術點梳理僅以「日常優化工作」爲牽引點,涉及哪個模塊,就具體去看哪個模塊的代碼。 一、CINN 框架 CINN 中CodeGen之後的代碼編譯主要交給了Compiler類來負責。核心的函數主要是: Build(ir::Modul

原创 工程師的十條精進原則

這篇博客內容是我三年前剛入職不久在其他地方瀏覽並二次整理的,如今三年歲月匆匆而過,回頭再次 check 了下這十條原則,體會更加深刻。 一. Owner意識 體現在兩個層面:一是認真負責的態度,二是積極主動的精神 認真負責是工作的底線。

原创 飛槳Paddle動轉靜@to_static技術設計

一、整體概要 在深度學習模型構建上,飛槳框架支持動態圖編程和靜態圖編程兩種方式,其代碼編寫和執行方式均存在差異: 動態圖編程: 採用 Python 的編程風格,解析式地執行每一行網絡代碼,並同時返回計算結果。 靜態圖編程: 採用先編譯後

原创 cuBlas API Launch Latency 耗時異常分析記錄

一、背景 最近在做 AI 編譯器生成 Kernel 支持 Bert 模型訓練調優工作,在分析 bert 的timeline中發現,在每個 step 的前兩個 cinn_instruction_run 之後,總是固定跟着一個 2.5 ms 左

原创 AI 編譯器CINN中的OpLowering優化Pass

一、Lower 主邏輯 在 OpLower::Lower() 接口中,主要分爲兩大類: Elementwise類,主要涉及的 OpPattern 包括:kElementwise 、kBroadcast 、kInjective Reduce

原创 TVM 中的 Profiler 設計

一、基本用法 首先看 Profiler 的用法: with ms.Profiler() as profiler: # .... 用戶代碼 print("Tuning Time:") print(profiler.table

原创 CUDA 的隨機數算法 API

參考自 Nvidia cuRand 官方 API 文檔 一、具體使用場景 如下是是在 dropout 優化中手寫的 uniform_random 的 Kernel: #include <cuda_runtime.h> #include

原创 CINN 中子圖編譯緩存機制

採用 「問-答」形式記錄研讀 CINN 開源框架的筆記 Q:CINN中子圖編譯的入口是在哪裏? for (const auto& node_vec : clusters) { // <------- 逐個遍歷每個子圖 //

原创 Triton 源碼初步研讀

一、核心接口形態 def jit( fn: Optional[T] = None, *, version=None, do_not_specialize: Optional[Iterable[int]] =

原创 飛槳PaddleLite架構研讀

一、架構全景圖 二、源碼詳細解讀 1. Lite體系下似乎有多種 op_desc/program_desc 的定義,之間的關係是什麼?這樣設計的背景和好處是什麼? model_parser目錄下,包含 flatbuffers——結構描

原创 飛槳動態圖PyLayer機制

一、主要用法 如下是官方文檔上的使用樣例: import paddle from paddle.autograd import PyLayer # Inherit from PyLayer class cus_tanh(PyLayer):

原创 Tensorflow和飛槳Paddle的控制流算子設計

一、概覽 注:整體方案上尚存在技術疑點,需進一步小組內討論對齊,避免方案設計上存在後期難以擴展(或解決)的侷限性 框架 TensorFlow 1.x TensorFlow 2.x Paddle cond/while √ √