torch-spyre 编译器迁移至 Inductor
AI 总结
PyTorch 博客介绍 torch-spyre(IBM Spyre 加速器的 PyTorch 集成)已把 torch.compile 后端从完全自建的 sendnn 编译栈换成基于 Inductor 的 backend=inductor。大部分 Inductor 代码原样复用,真正的工作集中在三处硬件差异:Spyre 以 128 字节的 stick 而非单个元素为数据搬运单位;每个核心只有 2MB 本地 scratchpad,且没有硬件自动管理的缓存层,数据进出全靠编译器显式发指令;32 个核心按静态数据流运行,因此工作划分必须在编译期决定。作者称新编译器体积约为旧方案的七分之一,并举例说在输入输出张量均已驻留显存的情况下,改变分块方式可把批量矩阵乘法的内核时间在不同 batch 与形状下降低 29%–69%。目前 Spyre 相关 pass 通过 monkey-patch Inductor 的 GraphLowering.codegen() 接入,团队正与 PyTorch 上游合作把用到的扩展点正式化,以便其他树外硬件后端复用。
深度见解
它展示了主流开源编译器栈能被改造去适配非 GPU 形态的推理加速器,对做硬件后端与编译器的人有直接参考价值。