UNIT 73 / 78 · W11-5
把编译器责任接回同一主项目
本单元预计 6 核心小时。可以分成多个学习时段,按完整小节推进;停下来时留下输入、命令、结果和下一步。
时间包含阅读、编码与检查,是学习预算而非期限。打开此页只保存阅读位置,不代表通过验收。
先知道自己在观察什么
AST、IR 与 SSA:同一个表达式的三种表示 →
复盘名称唯一与真实IR还需的类型/支配约束。
优化首先要合法:别名、溢出与浮点重排 →
选一个别名反例解释优化前提。
Tensor lowering 与内存规划:值什么时候可以共用一块空间 →
选一处活跃区间冲突解释不能复用。
ABI、装载与 runtime:找到函数还不等于能安全调用 →
沿源码、产物、入口、参数、执行、完成、回收串起流程。
先备不清楚时,沿章节入口补读;不要依赖翻过页数判断进度。
先留下自己的预测或独立尝试
先预测twice(7)=14与missing拒绝,再运行函数表模型,说明它没有从文件装载机器码。
符号查找成功与失败 →源码下载与编译入口
下载到自己的练习目录。按本节给出的完整命令编译;多文件与driver要求见原任务。需要时查阅文件保存与编译操作 →
48-b.cpp先保存预测,再核对正文标明的预期或诊断。完整构建、多文件与设备实验按原任务命令执行。
通过一个变动看清原因
在副本新增名为plus_one的小函数入口,用输入7调用;保留missing的拒绝检查。
修改后应观察到什么
plus_one得到8,twice仍14,missing仍失败;名字查找与调用结果分别检查。
换一组条件,独立解决
为本人Reduction Lab写一页编译到执行说明:标出自己的函数在实际CPU构建中的位置、一次IR观察、一个合法性反例及未来设备边界。
用这些条件检查自己的实现
- 引用真实命令与本人的当前源文件,不写不存在的LLVM/MLIR pass或GPU产物。
- 每条性能结论连到原始CPU样本;设备API只列已读/未执行状态。
用证据决定是否进入下一单元
- 编译器、runtime、driver分别需要哪些输入合同?
- 改变buffer复用何时会改变异步完成依赖?
本单元的验收依据
一页说明与现有代码、IR和数据互相对应;不另开完整backend/JIT项目,准备最终复现。
留下自己的代码或推演、测试输入、真实输出和仍不确定的问题。未达到要求时,下一次继续本单元。