技术跟踪

读过 · 想过 · 再记录

围绕 LLVM 异构编译器与 CUDA 兼容,从训练、推理、算子和工具链的原始资料中选择值得追问的问题,留下理解、依据与后续验证。记录按实际阅读进度发布,成熟内容再整理到专题中。

阅读记录

还没有发布阅读记录。这里会收录读完原始资料后的个人总结。

按七层选读原始资料

以 LLVM 异构编译器与 CUDA 兼容为重点,连接训练与推理的真实问题。每次只选少数有实质影响的变化,不要求每个项目都更新。

查看七层完整表:研究问题与硬件验证 →

01 / 按问题选读

计算框架与训练/推理系统

从训练迭代、梯度与推理输出出发,识别算子、显存、平台接口及通信依赖。

02 / 按问题选读

图编译与张量程序编译

关注前向/反向编译、融合、动态形状与内存规划,对照变换前后的语义和编译开销。

03 / 按问题选读

算子语言与编程抽象

关注布局、分块、搬运、同步与目标支持,追踪实际编译入口和生成代码。

04 / 按问题选读

计算库、并行基础库与通信库

围绕 CUTLASS、cuBLAS、cuDNN、CCCL、NCCL,核对源码、接口、数值与通信行为。

05 / 核心主线

语言前端与异构编程模型

以 Clang 与 CUDA C++ 为主,按问题对照 HIP、SYCL;关注语言语义、主机/设备划分与内建函数。

06 / 核心主线

编译中间表示、优化与目标后端

持续跟踪 IR 语义、Dialect、Pass、降层、合法化、指令选择与寄存器分配,回到原始讨论和回归用例。

07 / 核心主线

工具链、运行时与设备执行

核对 PTX、设备链接、ABI、内存、流、事件和同步变化,区分编译、启动、正确性与性能。

来源列表表示关注范围,不代表已读、已复现或已支持。训练、推理、分布式与低精度作为跨层场景;公开记录按实际阅读与验证进度发布。

一条记录,留下四件事

原始变化

标明主要层次、关联层次与场景,以及日期、版本、原始链接;区分提案、合入与发布。

我的理解

解释问题、上下游影响与取舍,区分事实、推断和待验证判断。

验证与范围

标明仅阅读、已复现或待验证,说明硬件、输入、精度与局限;正确性和性能分别评价。

下一步

关联实验或长期专题,把值得追问的问题继续展开。

长期思考

怎样降低异构芯片接入计算生态的成本,同时保留硬件差异化?

沿七层软件栈逐步积累证据,重点研究编译器。当前先看数据驻留与跨算子布局;配置复用、硬件取舍留作后续方向。

v4.3 · 更新于 2026-09-19 · 设计推演与数学演示,尚无芯片实测

研究框架七层软件栈 · 接口契约 · 生态协作

研究问题与当前判断

如何通过编译抽象、接口契约与验证体系,降低国产异构芯片接入主流计算生态的总成本,同时保留硬件发挥差异化能力的空间?

总成本按迁移、验证、调优、部署、诊断和升级维护分别记账。减少芯片团队的工作却增加用户改写量,不能自动算生态进步;增加算子覆盖率却依赖不可见的主机回退,也不等于模型可用。建议先用一个有限工作流证明第二种硬件接入时确实少做了重复工作,再扩大公共接口。

当前最值得检验的是跨算子数据驻留与布局协同。配置族复用、软件证据驱动硬件演进保留为后续两个方向,尚未证明它们在具体产品上回报最高,不同时立项。暂不主动建设新通用语言、全量 CUDA 替代或新的统一平台。

这里的关键推演是:近存提高本地处理效率后,系统瓶颈可能向算子边界、跨分区通信、配置及主机调度迁移。若这部分可回收损失很小,就应放弃这条优化优先级。支持它的应是实际关键路径,而非“数据很重要”的泛泛判断。

七层全景:每层要交付什么

第一层,框架与训练/推理系统。代表入口包括 PyTorch、Megatron、DeepSpeed、vLLM、SGLang、TensorRT-LLM。TensorRT-LLM 作为项目级长期推理系统研究对象,按版本区分当前 PyTorch-native 主线与历史 TensorRT-engine 架构。vLLM-Ascend 作为 vLLM 接入昇腾 NPU 的硬件插件案例,长期关注平台接口、算子与图执行适配、编译及运行时依赖、上游版本兼容和回归验证。交付对象是模型行为、梯度、优化器、检查点及服务调度;验收整图和真实请求分布。设备注册、图编译接入、自动微分、分布式通信分别验收,不能互相替代。训练、推理、分布式和低精度是跨层标签。

第二层,图与张量编译。交付带形状、别名、精度和副作用约束的子图;决定分解、库调用、融合与内存规划。显式报告图断裂、重编译及回退。用全图依赖和资源冲突决定关键路径,避免只优化孤立节点。

第三层,算子语言。Triton、TileLang、CuTe 等入口具有不同执行假设。应尽量复用计算语义,允许布局、流水、同步和目标操作扩展;先检查线程模型是否适配空间执行,不能承诺换后端即可性能移植。

第四层,计算、并行与通信库。交付数值、布局、workspace、异步和版本契约;原生库、生成 kernel 与参考实现可以并存。通信需额外核查进度、顺序、拓扑、超时与错误传播。单卡编译成功不能证明多卡训练可用。

第五层,前端与异构模型。分别承诺源码语法、类型、地址空间、内建函数、原子、屏障、API、ABI 与设备链接。存量 CUDA 代码按客户真实调用面选择支持范围;代价过高的语义明确拒绝或显式转换,不能无声模拟后再宣称兼容。

第六层,IR、优化与后端。在布局、数据放置、依赖和数值决策完成前保留必要信息。LLVM 可承担适配 ISA 的控制、标量或向量代码生成;空间映射、路由与配置生成可能需要独立表示及映射器。MLIR 的渐进降层提供组织手段,不自动提供变换正确性、成本模型和生产成熟度。

第七层,工具链、运行时与设备执行。交付可装载产物、目标能力、缓冲生命周期、事件及错误边界;核验驱动/固件/编译器兼容。记录首次编译、装载、配置、执行和排队时间。缓存失效、取消、异常恢复和升级回滚属于可用性要求,不应等性能跑通后才补。

这七层并非必须经过的流水线:框架可直接调用库,算子 IR 可直接降层,用户设备源码是另一条入口。硬件可观测性、正确性和性能验证贯穿全栈。公开地图保留“层次、代表技术、研究问题、硬件与验证”四个语义列;此处用文字解释各层责任。

最小公共边界:共享合同,保留实现选择

建议从三类合同开始。语义合同描述形状、dtype、数值策略、别名及副作用;资源合同描述布局、存储空间、容量、对齐、搬运和事件依赖;部署合同描述目标能力、编译器/运行时版本、产物与缓存有效期。它们是候选接口设计,不是新标准,也不是形式化证明。

例如 RMSNorm 的输出被矩阵乘消费,公共语义可以保持一致,但行分片、H 维分片、W 的复制和跨分区归约未必相同。布局变化必须有转换边及成本,不能只在 kernel 注释中约定。事件合同要回答数据何时可读、缓冲何时可复用、失败由谁观察;有一个异步句柄并不保证这些语义完整。

执行方案应携带适用域:形状范围、精度、连续性、别名条件、资源上限、目标版本及必要同步。运行时检查通过才使用,失败时选择已验证的替代方案或给出明确错误。回退也要记账,包括复制、设备切换和额外内存。一个结构检查器不能保证浮点语义正确,仍须差分、边界与应用验证。

搜索器与合法性检查器可以解耦:搜索器提出布局和映射,检查器确认运算覆盖、容量、资源冲突、路由与依赖。学习式搜索可更换,正确性责任不能全部随它改变。但检查器也可能错误或遗漏性质,应有负例、独立实现交叉检查及明确覆盖边界。不会因为附上一个“验证通过”字段就成为可信编译。

公共层是否值得存在,用第二个独立后端检验:同一测试集和错误分类能复用多少,适配代码和调试工时减少多少,上游升级时修改点是否减少。如果只是把各厂商特殊情况搬进公共层,接口尚未降低总成本,应缩小边界。

生态协作与投入决策

兼容存量入口降低采用门槛,原生布局和映射创造差异化,验证与诊断降低长期维护负担。三者可能互相促进,但不能据此推导商业成功;交付、价格、供货、服务和组织能力仍有独立作用。

建议共享负载契约、能力查询、错误分类、复现格式和上游通用修复;保留目标映射器、成本校准和原生运行时的实现差异。共享不意味着开放所有代码或企业资料,权利边界需明确。技术壁垒更可能是稳定适配新模型的能力、真实回归资产和可解释的调优知识,不只是封闭语法。

每次投入决策只需回答四件事:谁的哪个成本下降;与哪条可用基线比较;何种观察会否定;下一项最小证据是什么。先完成一个端到端工作流,再考察第二个独立后端的复用;未取得验证结果前,本札记仍是研究假设,不作路线成功声明。

方案推演布局协同优先 · 成本算例 · 反例与停止条件

优先方向一:布局协同,先算可回收损失

比较 RMSNorm → 矩阵乘的三条路径:A 各算子独立调优并转换布局;B 共享布局、分别执行;C 可行时融合或联合流水。相同输入、精度和输出约束下比较全子图;不允许通过少算、改变误差规则或隐藏主机复制获胜。

假设串行关键路径单位为微秒:A 的有效计算为 60、布局/搬运为 30、提交同步为 10,总计 100;B 因妥协布局计算为 65、搬运为 8、提交为 10,总计 83;C 计算为 78、搬运为 2、提交为 7,总计 87。B 优于 A,但“搬运最少”的 C 不是最好。这些数值完全为假设,仅检验推理和算术。

反例:矩阵乘占主导时,A 为 85+5+10=100,B 为 95+3+10=108,C 为 110+1+7=118;布局协同和融合都退化。若可消除部分仅占原耗时的 8%,即便零额外成本且完全消除,上限也只有 1/(1-0.08)=1.087 倍。占 40% 时理想上限为 1.667 倍。它是保守筛选投入的工具,不能当作真实预测。

一般判据:减少的关键路径搬运与提交时间,必须大于新增计算、资源竞争、搜索摊销与运行时选择时间。可重叠阶段不能全部相加;上面的串行算例不模拟重叠、排队、缓存、热和网络。真实实验用时间线重建执行依赖图,并报告冷启动与稳态、P50/P95/P99、吞吐、峰值内存及失败率。

预先固定基线、输入分布和候选预算。先分调优集和未见形状验证集,再比较,不在测试集上反复选择最好策略。至少覆盖小 B、非整块 H、大行、布局不满足及容量不足。单算子统计之外记录每条边实际字节数;无法直接测量的计数器写出估计方法和误差。

停止条件:可回收损失不足以抵消实现维护成本;未见形状退化不可控;应用尾延迟或吞吐没有改善;共享布局只在一个手调样例成立。结论失败同样有价值:它会把投入移向已测得的瓶颈。

算例:RMSNorm 的语义与映射

输入 X[B,H]、W[H],H>0,逐行 r=1/sqrt(mean(X^2)+epsilon),Y=X*r*W。候选契约为 FP16 输入和参数、FP32 平方/归约/中间乘法、最后转回 FP16,epsilon=1e-6;不是所有实现必须采用的标准。低精度溢出、非有限值、非连续输入需要另外定义,不能以偶然行为作承诺。

按行分片无需跨分区归约,但可能复制 W、小 B 并行度低或整行放不下。沿 H 分片提高并行度,却必须合并平方和、回传 r 并保留/重读 X。补齐元素贡献归约单位元,分母始终为实际 H。比较时还要算前后算子所需的重排及归约通信。

实数模型下,g=dL/dY,u=g*W,则 dx=r*u-X*r^3*mean(u*X);dW 对行累加 g*X*r。实际训练要分别验证前向、dx、dW、累加与转换,不能把公式等同于任意 dtype 的逐位一致。高精度参考、数值梯度和应用收敛各回答不同问题。

验证状态:成本算例与实数近似梯度公式已做本地数学检查;FP16 数值契约、真实调度与芯片性能仍待验证。数学检查不能替代设备实验。

后续方向二:有限配置族与在线成本

假设专门化额外准备 C=200 微秒,通用每次 50,专门化每次 30。仅准备一次、无额外开销时,N>10 才获益。第 10 次只是持平。若每次请求有 10% 概率因驱逐等原因再付 200,加 2 微秒选择开销,专门化期望成本为 30+20+2=52,已差于通用的 50。缓存命中率不是装饰性指标。

少量参数化配置是否胜过逐形状编译,取决于请求分布、适用域稳定性、冷启动、缓存预算和最坏退化。在线策略可先用透明规则,只有确有收益再引入复杂预测。未见形状拒绝不合法方案;长期回退率上升是覆盖退化信号,不靠扩大缓存无限补洞。

缓存键至少应覆盖实际影响代码和契约的输入:代码/IR、形状约束、dtype与精度策略、布局、目标能力、编译选项及版本。运行时与固件 ABI 的兼容规则应明确。测试配置碰撞、升级失效、损坏产物和部分编译失败;兼容不能简单归结为文件名相同。

停止条件:形状变化导致重新验证量不可控;选择与管理成本吃掉收益;冷启动或 P99 不可接受。此时减少配置或回到通用路径,保留明确支持边界。

后续方向三:硬件的收益要受软件成本约束

3D 是集成方式,近存是计算与存储关系,可重构是资源可配置性。它们不是同义词;不预设模拟存内、FPGA 或某种 CGRA。没有存储层次、拓扑、配置时延和热数据时,不推导具体优势倍数。

先做反事实上限:分别将计算、跨分区通信、配置开销理想化,观察同一依赖图的端到端改善;随后加入可实现带宽、面积、功耗、容量、持续频率和验证复杂度。多个理想化结果不能相加;瓶颈会迁移。若归约主导,可比较互连/归约原语;若配置主导,比较上下文复用;若热降频主导,更多峰值算力可能无益。

一个大胆但可证伪的架构假设:有价值的可重构性,应增加编译器能够以有限成本找到并验证的优质方案。额外自由度若很少改善真实负载,却扩大搜索与回归空间,可能降低产品价值。反例是关键负载确实依赖这些自由度,且工具能稳定利用;不能为简化编译器任意删减硬件能力。

优先争取可观测性:各级字节流量、bank 冲突、队列等待、配置占用、时间戳和热状态。它能帮助区分策略错误与硬件上限。性能证据也要进入财务与交付判断:每次模型接入的人日、升级适配的人日、故障定位时间、持续服务成本。没有真实数据就保留空项,不虚构 ROI。

参考资料按研究问题整理,注明阅读与复现状态

以下资料用于提出问题和设计验证方法;阅读状态不等于复现状态,论文结果也不直接代表本文方案的收益。

编译抽象与变换

CINM(arXiv:2301.07486v4,2024-05-24):已读全文相关章节。参考分层抽象,以及真实 UPMEM 与模拟 CIM 的评估方法;第 3.2.2、3.3 节的代价模型接口和启发式选择,不代表通用代价模型已经完成。不能据此推断任意 3D 可重构目标的性能。原文:CINM · 论文全文

MLIR Transform Dialect:参考官方文档中的变换表示与控制。目标合法性、成本校准与执行验证仍需独立完成;实施时锁定文档及代码版本。文档:MLIR · 官方文档

架构协同与物理约束

Plasticine(ISCA 2017):作为计算、存储、互连协同的论文参考;本次结构整理未新增论文复现,不将原架构的评估结果外推至其他芯片。论文:Plasticine · 论文 PDF

Tasa(arXiv:2508.07252):用于关注 3D 堆叠中的热约束和带宽共享。本次沿用此前阅读记录,未复现;不作为具体产品收益证据。论文入口:Tasa · 论文入口

继续阅读

魏少军、李兆石、朱建峰、刘雷波《可重构计算:软件可定义的计算引擎》(中国科学:信息科学,2020,50(9):1407–1426):已核对题录与摘要,全文尚未完成核读。参考入口:可重构计算 · 题录与摘要

刘雷波清华主页:仅核对公开研究目录,含 MapZero、Orinoco、Shogun;MapZero 全文尚未完成核读,不引用未核对的实验结论。目录:刘雷波 · 研究目录

清华 2017 年公开介绍:提供任务依赖与运行时流水的阅读线索,不能替代论文与复现实验。介绍:清华 · 公开介绍

以上资料作者与机构不为本文推演背书。

下一步 选一个公开的 RMSNorm → 矩阵乘工作流,固定输入与基线,先取得真实时间线,再判断布局优化是否值得做。

最近修订 2026-09-19:重整阅读层级,移除检查代码;研究结论未变。2026-09-18:合并札记,补充成本反例与数学演示。