NPU编译器设计与算子映射实战

📚 共计 30 章节
01
NPU编译器概述
AI芯片发展简史 · NPU架构特点 · 编译器核心作用 · TVM/MLIR/XLA生态
基础生态
02
计算图与中间表示
计算图概念 · 静态/动态图 · IR设计 · MLIR Dialect · Graph IR vs Linear IR
IR核心
03
前端解析与算子识别
ONNX/TF GraphDef/TorchScript解析 · 算子模式匹配算法
解析前端
04
算子映射基础
映射定义与目标 · 1-to-1 / 1-to-N / N-to-1 · 映射表构建与维护
映射核心
05
常见算子映射案例 (上)
Conv2d → NPU卷积引擎 · MatMul → 矩阵单元 · BatchNorm融合
卷积映射
06
常见算子映射案例 (下)
Pooling · ReLU/Sigmoid/Tanh · ElementWise · Reshape/Transpose
激活池化
07
算子融合技术
融合原理与收益 · Conv+BN+ReLU · MatMul+Add · 模式匹配 · 内存优化
融合优化
08
内存规划与数据搬移
NPU存储层次 · 数据搬移策略 · Double Buffer · DMA调度
内存DMA
09
循环优化与Tile策略
循环分块 · 多维Tile · Cache命中率 · 循环展开与向量化
循环Tile
10
调度与指令生成
Schedule树 · 指令并行性 · VLIW打包 · 流水线调度
调度VLIW
11
量化与精度管理
INT8/INT4量化 · QAT/PTQ · 量化映射表 · 混合精度
量化精度
12
硬件抽象层 (HAL) 设计
HAL接口 · NPU寄存器抽象 · 指令编码 · 硬件能力查询
HAL硬件
13
自动调优与AutoTVM
AutoTVM框架 · 代价模型 · 搜索空间 · 遗传/模拟退火 · 迁移学习
自动调优TVM
14
MLIR在NPU编译器中的应用
MLIR架构 · Dialect定义/转换 · Pass Pipeline · Linalg/Tensor Dialect
MLIRDialect
15
TVM在NPU编译器中的应用
TVM架构 · Relay IR / TE · AutoScheduler · BYOC
TVMCodegen
16
XLA与HLO
XLA概览 · HLO原理 · HLO→LLVM Lowering · TPU实践
XLAHLO
17
自定义算子注册与扩展
C++接口 · Python绑定 · Shape/类型推导 · 梯度注册
扩展自定义
18
算子性能分析与Profiling
Profiling工具链 · 耗时分析 · 带宽利用率 · 性能瓶颈定位
性能Profiling
19
图优化技术
常量折叠 · 死代码消除 · 公共子表达式 · 代数化简 · 图重写引擎
图优化重写
20
动态形状支持
动态形状挑战 · IR表示 · 调度策略 · Padding/Mask技术
动态形状调度
21
稀疏计算支持
COO/CSR/CSC格式 · 稀疏算子映射 · 内存优化 · 结构化稀疏
稀疏格式
22
多核并行与通信
NPU多核架构 · 数据/模型并行 · 核间同步 · Ring AllReduce
并行通信
23
编译时间优化
增量编译 · 缓存机制 · 并行编译 · 预编译库管理
编译缓存
24
调试与验证
正确性验证 · 数值一致性 · 算子单元测试 · 端到端验证
调试验证
25
部署与Runtime设计
Runtime架构 · 序列化/反序列化 · 动态加载 · 性能优化
部署Runtime
26
安全与隔离
模型加密/解密 · 算子沙箱 · 内存隔离 · 侧信道防护
安全隔离
27
异构计算支持
CPU+NPU协同 · 任务划分 · 异构内存 · 同步/异步执行
异构协同
28
前沿技术
可微分编程 · NAS编译器 · GNN编译器 · 量子计算编译器
前沿探索
29
实战项目 (一)
从零搭建简易NPU编译器:前端解析 · IR构建 · 算子映射 · 代码生成
实战框架
30
实战项目 (二)
基于TVM实现NPU后端:Target定义 · Codegen · Runtime集成 · 调优
TVM后端