知识体系

按主题积累 · 按脉络阅读

以四根知识支柱组织九大领域,按前置概念和 Season 建立阅读路径。从 LLVM 与异构编译器系列开始,逐步积累完整文章与专题讲解。这里按概念关系组织阅读,已发布文章与已验证实验分别标注。

九大领域总览

各领域按问题与前置知识逐步展开。阅读顺序由概念依赖决定,不必拘泥于主题编号;先读已发布的基础文章,再沿专题深入。主题介绍不代表文章已经完成。

  • 理解计算与智能:01 LLVM 与异构编译器;03 计算机科学基础;04 AI 原理与智能系统;09 可重构计算与软硬件协同。
  • 理解思想:02 哲学;05 逻辑学与批判性思维。
  • 理解世界:06 科学史与技术史;07 数学与物理直觉。
  • 把事情做成:08 工程师方法论。

LLVM 与异构编译器 · S1 已发布:

  1. 第 01 期——编译器到底是什么?一段 C++ 代码如何变成可执行程序
  2. 第 02 期——GCC、Clang、LLVM 到底是什么关系
  3. 第 03 期——预处理、编译、汇编、链接:用同一个 C++ 程序看清四个阶段
  4. 第 04 期——.ll、.bc、.s、.o、ELF 分别是什么?它们处在构建流程的哪里
  5. 第 05 期——前端、中端、后端:现代编译器为什么要分层
  6. 第 06 期——clang、opt、llc、llvm-mc、llvm-objdump、lld 分别做什么
  7. 第 07 期——LLVM IR 到底是什么?为什么需要中间表示
  8. 第 08 期——用一段分支程序理解 BasicBlock、CFG 与 SSA
  9. 第 09 期——LLVM Pass 是什么?优化流水线如何组织
  10. 第 10 期——第一次阅读 llvm-project:源码目录、构建与调试入口

本系列前十篇图文已发布。前三期保留21.1.8历史记录,第4—10期实验为18.1.3;第1期网页全命令日志覆盖仍待对齐,第10期源码构建环境的lit未通过。各篇正文分别说明已验证范围与限制,视频状态独立维护。

七层地图是计算与智能领域中的异构编译研究子地图;它不替代九大领域总纲。文章覆盖所有领域,随笔保留个人阅读和生活观察。

理解计算与智能

01 LLVM 与异构编译器

语言语义、LLVM IR、MLIR、优化与代码生成,以及编译、链接、运行时和调试之间的协作。

09 可重构计算与软硬件协同

并行执行、数据流、存储层次和成本分析;通过公开案例理解异构与可重构计算中的映射问题。

入门阅读 · 已发布:

  1. 可重构计算到底是什么?“可重构”究竟改变了什么
  2. 固定功能、可编程与可重构:三种计算方式如何区分

04 AI 原理与智能系统

连接训练、推理、张量计算与系统执行,关注算子表达、融合、布局、精度与性能之间的取舍。

入门阅读 · 已发布:

  1. 人工智能、机器学习、深度学习:三个概念怎样区分
  2. 机器学习为什么能从数据中形成可泛化的模型

03 计算机科学基础

算法、类型与程序语义、操作系统和计算模型,为源码分析与工程判断建立基础。

入门阅读 · 已发布:

  1. 计算机到底是什么?从信息表示、计算到输入输出
  2. 0 和 1 为什么能表示整个数字世界

从真实负载到设备执行

异构编译与计算软件栈:七层地图

以 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 就加入最小回归测试,进入映射实验前先明确模型能证明什么。每个单元围绕一个主要问题,关联前置概念、源码或推导、证据与适用边界;成熟内容再整理成系列。

01 / 起点

程序如何执行

编译与链接、主机与设备、并行执行模型,先建立端到端的全貌。

02 / 前端

语言与 CUDA 语义

Clang、语法与语义分析、主机/设备代码划分、诊断与语言行为差异。

03 / 中间表示

LLVM IR 与多层 IR

SSA、类型、控制流、内存与副作用,以及 UB、poison 与 freeze 的语义边界。IR 通过结构检查,不代表变换已被证明正确。

04 / 变换与映射

MLIR 与计算降层

Dialect、合法化、Pass,以及从 Tensor 到 Buffer 的别名、复用与拷贝。用公开小实例检查布局、调度和资源约束;代价模型需要校准,并用未参与调优的负载检查失效边界。

05 / 后端

从 IR 到目标代码

指令选择、调度、寄存器分配、ABI 与目标描述,结合代码和测量分析取舍。

06 / 执行链路

运行时与工具链协作

编译、链接、加载、内存与同步,以及设备端诊断、调试和分析工具。

07 / 算子与框架

把计算接入系统

CUDA C++、Triton、TileLang 与 CuTe 算子,连接 PyTorch 前向/反向编译链路与训练、推理系统。明确算子、动态形状、精度、能力查询和回退契约,分别观察接入成本与端到端收益。

08 / 验证

正确性、性能与演进

最小复现、回归、差分测试、数值误差与基准方法,持续记录兼容范围和版本变化。

兼容与适配,分层看问题

以 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 哲学

从原文、问题与概念出发,重建论证、比较异议,理解思想传统;不以人物简介代替哲学讨论。

入门阅读 · 已发布:

  1. 哲学到底是什么?它研究的问题和科学有什么不同
  2. 怎样重建一个哲学论证:前提、结论、反例与回应

05 逻辑学与批判性思维

通过具体案例检查前提、推理与证据,记录判断如何更新;概率公式与推导可结合数学领域阅读。

入门阅读 · 已发布:

  1. 逻辑到底是什么?“听起来有道理”为什么不等于推理有效
  2. 命题到底是什么?一句话怎样才有真假

理解世界

06 科学史与技术史

以史料、时间线和多种原因理解科学与技术演进,区分思想、实现和传播,避免单一英雄叙事。

入门阅读 · 已发布:

  1. 科学为什么会出现?观察、解释与可检验知识怎样形成
  2. 古代文明如何开始用数学描述天文、土地和时间

07 数学与物理直觉

分别沿数学与物理线阅读,在具体问题处汇合。结合定义、推导、数值实例与误差检查,说明近似模型何时适用。

入门阅读 · 已发布:

  1. 数学到底是什么?“发现”与“发明”为什么一直存在争论
  2. 数字到底是什么?为什么 1 不是一根棍子

把事情做成

08 工程师方法论

问题定义、方案取舍、测试验证、调试与复盘,让理解进入可执行的实践。每个长期单元保留适用版本、复核日期、原始资料和勘误;代码、图表与讲义随主题组织。

入门阅读 · 已发布:

  1. 工程师到底在解决什么:需求、约束、权衡与可验证结果
  2. 写代码和做工程有什么区别:局部实现与系统责任

原始资料与阅读记录

主题与阅读关系随文章、实验和项目持续修订;新证据可能改变题目边界与先后关系。已发布文章保留链接,重要变化记入更新与勘误。