按主题积累 · 按脉络阅读
以四根知识支柱组织九大领域,按前置概念和 Season 建立阅读路径。从 LLVM 与异构编译器系列开始,逐步积累完整文章与专题讲解。这里按概念关系组织阅读,已发布文章与已验证实验分别标注。
九大领域总览
各领域按问题与前置知识逐步展开。阅读顺序由概念依赖决定,不必拘泥于主题编号;先读已发布的基础文章,再沿专题深入。主题介绍不代表文章已经完成。
- 理解计算与智能:01 LLVM 与异构编译器;03 计算机科学基础;04 AI 原理与智能系统;09 可重构计算与软硬件协同。
- 理解思想:02 哲学;05 逻辑学与批判性思维。
- 理解世界:06 科学史与技术史;07 数学与物理直觉。
- 把事情做成:08 工程师方法论。
LLVM 与异构编译器 · S1 已发布:
- 第 01 期——编译器到底是什么?一段 C++ 代码如何变成可执行程序
- 第 02 期——GCC、Clang、LLVM 到底是什么关系
- 第 03 期——预处理、编译、汇编、链接:用同一个 C++ 程序看清四个阶段
- 第 04 期——.ll、.bc、.s、.o、ELF 分别是什么?它们处在构建流程的哪里
- 第 05 期——前端、中端、后端:现代编译器为什么要分层
- 第 06 期——clang、opt、llc、llvm-mc、llvm-objdump、lld 分别做什么
- 第 07 期——LLVM IR 到底是什么?为什么需要中间表示
- 第 08 期——用一段分支程序理解 BasicBlock、CFG 与 SSA
- 第 09 期——LLVM Pass 是什么?优化流水线如何组织
- 第 10 期——第一次阅读 llvm-project:源码目录、构建与调试入口
本系列前十篇图文已发布。前三期保留21.1.8历史记录,第4—10期实验为18.1.3;第1期网页全命令日志覆盖仍待对齐,第10期源码构建环境的lit未通过。各篇正文分别说明已验证范围与限制,视频状态独立维护。
理解计算与智能
01 LLVM 与异构编译器
语言语义、LLVM IR、MLIR、优化与代码生成,以及编译、链接、运行时和调试之间的协作。
09 可重构计算与软硬件协同
并行执行、数据流、存储层次和成本分析;通过公开案例理解异构与可重构计算中的映射问题。
入门阅读 · 已发布:
04 AI 原理与智能系统
连接训练、推理、张量计算与系统执行,关注算子表达、融合、布局、精度与性能之间的取舍。
入门阅读 · 已发布:
从真实负载到设备执行
异构编译与计算软件栈:七层地图
以 LLVM 异构编译器与 CUDA 兼容为主线,把训练、推理、算子与设备执行放在同一张地图中。下面是研究与阅读入口,不代表已经完成的支持清单,也不是每个程序都必须经过的流水线。
按主要职责归类,项目可以跨层;同列不表示技术类型相同,也不表示共享编译路径。小屏幕可在表格内左右滑动。
| 层次 | 代表技术与项目 | 主要研究问题 | 硬件与验证如何融入 |
|---|---|---|---|
| 01计算框架与训练/推理系统 | 框架:PyTorch 训练:Megatron-LM、DeepSpeed 推理:vLLM(昇腾适配:vLLM-Ascend)、SGLang、TensorRT-LLM | 模型执行、自动微分与参数更新;算子组织、分布式并行、调度与通信。 | 识别设备、显存和互联需求;验证训练迭代、梯度、推理输出及端到端性能。 |
| 02图编译与张量程序编译 | PyTorch 编译栈、TVM | 图捕获、前向/反向图变换、融合、动态形状、内存规划与算子生成/选择。 | 检查变换是否保留语义;分析重计算、内存占用、融合收益与编译开销。 |
| 03算子语言与编程抽象 | Triton、TileLang、CuTe DSL、CuTe C++ | 分块、布局、线程映射、数据搬运、同步与计算的表达和降层。 | 对照线程束、共享内存、矩阵指令等能力;检查生成代码、边界形状、竞争与数值误差。 |
| 04计算库、并行基础库与通信库 | CUTLASS、cuBLAS、cuDNN、CCCL、NCCL | 模板实例化、接口契约、算法选择、数据类型、设备函数与通信依赖。 | 分别验证源码编译、接口行为、数值结果与通信正确性;在明确条件下比较性能。 |
| 05语言前端与异构编程模型 | Clang、CUDA C++、HIP、SYCL | 语言语义、模板与内建函数、主机/设备划分、地址空间与异构执行规则。 | 将语言语义对应到设备执行模型;用最小程序检查诊断、AST、IR 及主机/设备行为。 |
| 06编译中间表示、优化与目标后端 | MLIR、LLVM IR、LLVM 中端/后端 | 程序分析与优化、降层、合法化、指令选择、调度、寄存器分配与代码生成。 | 建立指令、寄存器和内存模型;通过 IR/机器代码检查、差分测试与回归验证语义和性能。 |
| 07工具链、运行时与设备执行 | CUDA Toolkit、PTX、设备链接、ABI、Runtime/Driver | 编译组织、JIT/AOT、链接与装载、启动、内存、流、事件与同步。 | 检查工具与设备的版本组合、模块装载和执行行为;定位链接、启动与异步执行问题。 |
怎样理解这些项目的边界
框架与训练:DDP/FSDP 是分布式机制,不能代表训练系统的全部;Megatron Core 是可复用组件,DeepSpeed 也覆盖推理。PyTorch 编译栈包括 Dynamo、AOTAutograd、Inductor 等组件;TVM 横跨多个编译环节。
语言与库:Triton、TileLang 包含语言和编译器;CuTe DSL 有自己的编译流程;CuTe C++ 是 C++ 编程抽象。CCCL 包含 Thrust、CUB、libcu++,不仅提供算子,也涉及并行算法、标准库、原子与同步能力。
IR 与执行:MLIR 支持多层表示和变换,不只是 LLVM 前面的一站;低层指令调度和寄存器分配通常由目标后端处理。PTX 是虚拟指令集,不是最终机器指令;CUDA Toolkit 与驱动也有不同职责。
硬件,是每层的约束
把 SIMT/SIMD、线程束与分歧、寄存器、存储层次、矩阵计算单元、异步搬运、原子与内存一致性连接到具体程序。
验证,是每层的依据
保留最小复现、版本和输入条件,用 IR/汇编检查、差分测试、数值误差、回归与性能分析支持结论。
两种阅读方向:从真实负载向下追到算子、编译入口、IR、后端与执行;从底层能力向上验证哪些算子和框架功能因此可用。
训练、推理、分布式执行和低精度计算作为跨层场景。持续深入前端、IR/后端和工具链,结合实际问题打通算子与库;不因项目清单扩大而平均分配投入。
编译器学习与实践
下面按主要学习阶段组织主题。验证贯穿每一步:第一次写 Pass 就加入最小回归测试,进入映射实验前先明确模型能证明什么。每个单元围绕一个主要问题,关联前置概念、源码或推导、证据与适用边界;成熟内容再整理成系列。
程序如何执行
编译与链接、主机与设备、并行执行模型,先建立端到端的全貌。
语言与 CUDA 语义
Clang、语法与语义分析、主机/设备代码划分、诊断与语言行为差异。
LLVM IR 与多层 IR
SSA、类型、控制流、内存与副作用,以及 UB、poison 与 freeze 的语义边界。IR 通过结构检查,不代表变换已被证明正确。
MLIR 与计算降层
Dialect、合法化、Pass,以及从 Tensor 到 Buffer 的别名、复用与拷贝。用公开小实例检查布局、调度和资源约束;代价模型需要校准,并用未参与调优的负载检查失效边界。
从 IR 到目标代码
指令选择、调度、寄存器分配、ABI 与目标描述,结合代码和测量分析取舍。
运行时与工具链协作
编译、链接、加载、内存与同步,以及设备端诊断、调试和分析工具。
把计算接入系统
CUDA C++、Triton、TileLang 与 CuTe 算子,连接 PyTorch 前向/反向编译链路与训练、推理系统。明确算子、动态形状、精度、能力查询和回退契约,分别观察接入成本与端到端收益。
正确性、性能与演进
最小复现、回归、差分测试、数值误差与基准方法,持续记录兼容范围和版本变化。
兼容与适配,分层看问题
以 CUDA 及相关算子编译为主线,按实际依赖逐步展开。下面列的是研究与验证范围,具体支持状态需要用版本、测试用例和测量结果说明。
语言与编译输入
CUDA C++ 语法与语义、主机/设备代码、构建参数和工具链行为;Triton、TileLang、CuTe DSL 各有编译路径,不能仅凭 .cu/.py 文件后缀判断依赖。
运行时、库与通信
内存、流、事件、同步和图执行;按算子依赖核对数学库、设备库与集合通信接口,例如 cuBLAS、cuDNN、CCCL 和 NCCL。
算子与编译栈
PyTorch 算子分发、自定义算子、torch.compile 与 Inductor;关注 GEMM、Attention、归一化、反向与梯度累加、优化器、量化、KV Cache 和 MoE 中的表达与编译问题。
框架与端到端行为
Megatron-LM、DeepSpeed 的训练负载,以及 vLLM、SGLang 的推理负载;核对平台接口、算子后端、执行图与通信依赖。区分可编译、可运行、结果正确和性能达标,记录模型、形状、精度及版本范围。
TVM、SYCL 与 HIP 作为按问题比较的相邻路线,逐项形成资料与实验。
兼容检查:语言与头文件 → 内建函数及设备函数 → 编译与链接 → 库接口 → Runtime/Driver 行为 → 执行正确性。
分别记录编译通过、链接通过、启动成功与数值正确;性能在固定环境、输入和测量方法下单独评价,不用一个“已支持”概括所有阶段。
理解思想
02 哲学
从原文、问题与概念出发,重建论证、比较异议,理解思想传统;不以人物简介代替哲学讨论。
入门阅读 · 已发布:
05 逻辑学与批判性思维
通过具体案例检查前提、推理与证据,记录判断如何更新;概率公式与推导可结合数学领域阅读。
入门阅读 · 已发布:
理解世界
06 科学史与技术史
以史料、时间线和多种原因理解科学与技术演进,区分思想、实现和传播,避免单一英雄叙事。
入门阅读 · 已发布:
07 数学与物理直觉
分别沿数学与物理线阅读,在具体问题处汇合。结合定义、推导、数值实例与误差检查,说明近似模型何时适用。
入门阅读 · 已发布:
把事情做成
08 工程师方法论
问题定义、方案取舍、测试验证、调试与复盘,让理解进入可执行的实践。每个长期单元保留适用版本、复核日期、原始资料和勘误;代码、图表与讲义随主题组织。
入门阅读 · 已发布:
原始资料与阅读记录
主题与阅读关系随文章、实验和项目持续修订;新证据可能改变题目边界与先后关系。已发布文章保留链接,重要变化记入更新与勘误。