← 完整学习路线

UNIT 73 / 78 · W11-5

把编译器责任接回同一主项目

本单元预计 6 核心小时。可以分成多个学习时段,按完整小节推进;停下来时留下输入、命令、结果和下一步。

时间包含阅读、编码与检查,是学习预算而非期限。打开此页只保存阅读位置,不代表通过验收。

01 / READ

先知道自己在观察什么

AST、IR 与 SSA:同一个表达式的三种表示 →

复盘名称唯一与真实IR还需的类型/支配约束。

优化首先要合法:别名、溢出与浮点重排 →

选一个别名反例解释优化前提。

ABI、装载与 runtime:找到函数还不等于能安全调用 →

沿源码、产物、入口、参数、执行、完成、回收串起流程。

先备不清楚时,沿章节入口补读;不要依赖翻过页数判断进度。

02 / PREDICT & RUN

先留下自己的预测或独立尝试

先预测twice(7)=14与missing拒绝,再运行函数表模型,说明它没有从文件装载机器码。

符号查找成功与失败 →
源码下载与编译入口

下载到自己的练习目录。按本节给出的完整命令编译;多文件与driver要求见原任务。需要时查阅文件保存与编译操作 →

48-b.cpp

先保存预测,再核对正文标明的预期或诊断。完整构建、多文件与设备实验按原任务命令执行。

03 / CHANGE ONE THING

通过一个变动看清原因

在副本新增名为plus_one的小函数入口,用输入7调用;保留missing的拒绝检查。

修改后应观察到什么

plus_one得到8,twice仍14,missing仍失败;名字查找与调用结果分别检查。

04 / DO IT YOURSELF

换一组条件,独立解决

为本人Reduction Lab写一页编译到执行说明:标出自己的函数在实际CPU构建中的位置、一次IR观察、一个合法性反例及未来设备边界。

用这些条件检查自己的实现

  • 引用真实命令与本人的当前源文件,不写不存在的LLVM/MLIR pass或GPU产物。
  • 每条性能结论连到原始CPU样本;设备API只列已读/未执行状态。
05 / EXPLAIN & CHECK

用证据决定是否进入下一单元

  1. 编译器、runtime、driver分别需要哪些输入合同?
  2. 改变buffer复用何时会改变异步完成依赖?

本单元的验收依据

一页说明与现有代码、IR和数据互相对应;不另开完整backend/JIT项目,准备最终复现。

留下自己的代码或推演、测试输入、真实输出和仍不确定的问题。未达到要求时,下一次继续本单元。