跳到主要内容

G5 计算算子建模方法分层设计规格

版本:1.0.0 状态:Accepted 创建日期:2026-06-21 作者:xiang.li 前置G5-计算建模设计规格

版本号规则 (SemVer):

  • major (X.0.0):方法分层体系重构、保真度一致性规则变更
  • minor (1.X.0):新增算子瓶颈类别、扩展一致性规则(向后兼容)
  • patch (1.0.X):修正笔误、补充说明

变更历史

版本日期变更说明
1.0.02026-06-21初版:算子建模方法分层(瓶颈→方法)+ 保真度一致性规则 + 顺序约束 + G5-vs-TPUPerf 定位

@tbl-spec-gcml-01 文档变更历史


概述

本 spec 冻结 G5 计算侧建模的方法分层决策:对不同计算算子按其性能瓶颈选不同建模方法,并定义多保真度档之间的一致性规则。本 spec 是方法论规格,不是算子清单——它定义「给一个算子,如何判定用哪种建模方法」的可核对规则,以及「低保真 roofline 与未来行为级模型如何不冲突」的一致性契约。

G5 已对 matmul 用指令级翻译(前置 spec)。本 spec 把方法选择推广到全部计算算子,并冻结为什么不同算子用不同方法、不同方法如何共存。

背景

G5 目标是厂商中立、生成式、多芯片、端到端的 LLM 部署性能仿真器(设计空间扫描)。计算侧现状只建了 matmul(指令级翻译,已 Accepted),向量类(softmax / 归一化 / 激活 / RoPE / 逐元素 / 量化)整块空白,排序选择类(topk / sort)占位。

驱动力:要给稀疏 attention(DSA)与大 KV 的 MHA 等算子做可信的上下文并行(CP)验证,需要这些算子的计算时间。但对所有算子统一上指令级不可行——指令级需要「LLM 算子 → 硬件指令序列」的 lowering 层,该层是芯片厂商编译器专属,既不在厂商参照仿真器里(它读编译产物不生成)、也不在 G5 里。盲目对所有算子建指令级会撞上这个不存在的 lowering 层,且对访存受限算子无精度增益。

需要一个按瓶颈分层的方法论:把昂贵的指令级用在它真能加精度的地方,访存受限算子用 roofline(绕开 lowering),不规则算子用专用模型,并保证各保真度档共存时不冲突。

名词定义

下表钉死本 spec 用到的核心名词。

名词定义与易混淆概念的区分
算子瓶颈决定算子执行时间的主导资源:算力受限 / 访存受限 / 不规则数据依赖瓶颈分类是方法选择的判据
指令级建模翻译厂商每指令闭式 cycle 公式 + 算子的指令分解(lowering)与 roofline 区别:下到硬件指令粒度
roofline 建模算子级 max(算力时间, 访存时间) × η不下到指令,算子级解析
lowering 层「LLM 算子 → 硬件指令序列 + descriptor」的编译/降级映射芯片厂商编译器专属,规则算子(matmul)可复刻、不规则算子难复刻
保真度档同一资源域的不同建模精度(roofline 静态 / 行为级争用 / cycle 级)升降档替换,不并行叠加
内存域 / 带宽域一条访存边占用的物理资源类别(LMEM / NoC / HBM / C2C)一域一真理源
行为级模型建模争用 / 队列 / 背压的事件级模型(如 NoC / SRAM bank 冲突 / HBM 队列)与 roofline 静态估计区分
拐点通信与计算相当、通信不再被计算掩盖的临界点决定哪些算子的精度对 CP 结论有影响
拐点地图comm/compute 比值在 (算子 × 区间) 网格上的分布,标出比值≈1(有拐点)的格子用现有解析评估器扫,决定建模优先级
生成式仿真从模型 + 配置生成 workload与 trace-driven(回放编译产物)区分
trace-driven 仿真回放编译器产出的指令 descriptor不能从配置生成、不能 sweep

目标与非目标

目标 / 需求清单(逐条可核对):

  • 需求:定义算子瓶颈分类规则(算力受限 / 访存受限 / 不规则),且给定一个算子能逐条判定它属哪类、用哪种方法。
  • 需求:访存受限算子用 roofline 建模,不依赖 lowering 层;算力受限 + tiling 规则的算子用指令级;不规则算子用专用模型 + 厂商 trace 关键点校验。
  • 需求:保真度一致性——同一内存域同一时刻只有一个真理源;行为级模型存在时该域访存时间由行为级给出,roofline 静态估计被替换而非叠加。
  • 需求:算子时长可分离为「计算估计 ⊕ 带『带宽域』标签的访存流量」,使 roofline → 行为级是换数据源而非重建。
  • 需求:每条访存边显式归属一个内存域(LMEM / NoC / HBM / C2C)。
  • 需求:建模顺序——先用现有解析评估器扫拐点地图圈定有拐点的算子区间,先修跨芯片错带宽域,再按拐点圈定的最小算子子集补建模。
  • 需求:冻结 G5 与厂商参照仿真器(TPUPerf)的定位——为什么 G5 是端到端平台、厂商仿真器是标定源。

非目标(明确不做):

  • 非目标:列具体算子清单。哪些算子需要建模由拐点地图数据决定,是 inventory 不是设计决策。
  • 非目标:写 lowering 层实现。本 spec 的结论之一恰是访存受限算子绕开 lowering。
  • 非目标:CP 多芯片桥(A1)的详细设计,单独 spec。
  • 非目标:绝对精度。无真机锚点,产出相对可信、绝对门控(继承前置 spec)。
  • 非目标:单个算子的 cycle 公式(matmul 见前置 spec;其余算子的具体模型待拐点地图圈定后逐篇定)。

用例说明

假设本方法论已落地,一个开发者要给 DSA 稀疏 attention 估计计算时间:

  1. 算子分解:DSA = index 投影(matmul)+ lightning indexer top-k(不规则)+ 稀疏 KV gather(不规则)+ sparse score/output(matmul)+ softmax(访存受限)。
  2. 逐算子判瓶颈选方法
    • matmul → 算力受限 + tiling 规则 → 指令级(前置 spec 已建)
    • top-k / gather → 不规则 → 专用模型 + 厂商 trace 关键点校验
    • softmax → 访存受限 → roofline(max(算力, bytes/带宽) × η
  3. 访存边归域:softmax 的访存边归 LMEM 域,带 bandwidth_domain="lmem" 标签;KV gather 的访存边可能归 HBM 域。
  4. 合成:DSA 计算时间 = 各算子时间按依赖串,每个算子时间 = 计算估计 ⊕ 带域访存流量。
  5. 未来升档:若日后建了行为级 HBM 模型,KV gather 的 HBM 访存流量路由到行为级模型,roofline 那块被替换——softmax 的 LMEM 估计不动。
  6. 优先级:开发者先跑拐点地图,确认 DSA 在目标 (cp, S, BW) 区间是否真有拐点;有,才精修上述算子;无(如稠密 MLA),则现有 matmul 近似已够。

详细设计

方法分层(瓶颈 → 方法)

核心规则:建模方法匹配算子瓶颈。给定算子,按瓶颈三分类,每类一种方法:

瓶颈类别算子例方法为什么
算力受限 + tiling 规则GEMM / BMM / Grouped GEMM / conv指令级翻译厂商闭式公式时间由阵列利用率 / tiling 决定,roofline 的扁平 η 抓不住近拐点的 underfill;lowering 规则可复刻,值得自建 mapper
访存受限softmax / LayerNorm / RMSNorm / 激活 / RoPE / 逐元素 / 量化roofline max(算力, 访存) × η时间 ≈ bytes/带宽,指令怎么拆不影响总时间;指令级无精度增益但需不存在的 lowering 层;精度天花板由带宽效率决定,roofline 已摸到
不规则 / 数据依赖top-k / sort / gather / scatter小专用模型 + 厂商 trace 关键点校验非简单 FLOPs/bytes,roofline 不适用;指令级需不规则 lowering;专用模型 + trace 校验绕开 lowering

@tbl-gcml-method-layer 算子建模方法分层规则

可前置判定的判据(陌生工程师拿到新算子按此独立判类,不依赖查表):

  1. 含数据依赖的 gather / scatter / 排序 / 选择 → 不规则
  2. 否则比较算术强度(FLOPs / 访存字节)与硬件 ridge point(峰值算力 / 峰值带宽):算术强度 ≥ ridge point 且 tiling 规则 → 算力受限;算术强度 < ridge point → 访存受限

例:softmax / 归一化 / RoPE / 逐元素 算术强度低(每元素少量运算、读写一遍)→ 访存受限;GEMM 算术强度随 M/N/K 增大超过 ridge point → 算力受限;top-k / gather 含数据依赖 → 不规则。

设计原理:统一精度是反模式。对所有算子用 roofline 会丢 matmul 近拐点精度;对所有算子用指令级需要对不规则算子不存在的 lowering 层、且对访存受限算子无增益。混合精度——精的方法用在它真加精度的地方——是项目既定原则(01-总览 升降档判据「关键路径精细,其余粗放」)和业界标准(gem5:CPU cycle-approx + DRAM queue-based + NoC flit;ASTRA-sim:roofline compute + 事件驱动时序)。

访存受限算子用 roofline 的可证伪依据:访存受限算子单遍读写张量,时间被访存流量主导,指令调度被访存掩盖。其精度上界 = 带宽效率不确定性(约 ±10-15%),指令级即使建出也压不到带宽地板以下(瓶颈不在指令)。

保真度一致性规则

防止 roofline 静态估计与未来行为级模型对同一访存产生两个时间值:

  • 一域一真理源:每个内存域同一时刻只有一个权威时间来源。无行为级模型时,roofline 静态 bytes/峰值带宽 是该域默认档;该域建了行为级模型(SRAM bank 冲突 / HBM 队列 / NoC 争用)后,该域访存时间由行为级模型给出,roofline 那块被替换。禁止两档对同一访存并行计算(=双重计算)。

  • 访存边可分离 + 带域标签:算子时长分离为两部分:

$$\begin{equation} t_{\text{op}} = \text{combine}\left( t_{\text{compute}},\ \sum_{e \in \text{访存边}} t_e^{\text{domain}(e)} \right) \label{eq:gcml-separable} \end{equation}$$

每条访存边 $e$ 携带 bandwidth_domain 标签。升档 = 把该边的访存流量请求路由到其域的行为级模型换数据源,计算估计部分不变。

  • 域归属:每条访存边显式归属一个内存域(LMEM / NoC / HBM / C2C)。本 spec 在前置 spec 的带宽域(LMEM 总线 / HBM / D2D / C2C)基础上显式增列 NoC 域(core 间),口径扩展而非漂移。错域会导致带宽口径错误(同跨芯片通信错走片内带宽的同构错误)。

设计原理:这是升降档原则在内存域上的应用——高保真档替换低保真档,不并存。带域标签使替换是「换数据源」而非「重建模型」。matmul 访存边的 bandwidth_domain 标签(前置 spec)是此机制的雏形,向量 roofline 访存边沿用同一机制。

顺序约束

建模工作的执行顺序,防止在错误前提上叠加未验证层:

  • 拐点地图先行:先用现有解析评估器扫 comm/compute 比值,圈定哪些 (算子 × 区间) 比值≈1(有拐点、精度对结论有影响)。稠密注意力 compute ∝ $S^2$、通信 ∝ $S$,大 $S$ 区间多无拐点;稀疏注意力 compute ∝ $S \cdot k$$k$ 为 top-k 截断),comm/compute 不随 $S$ 缩小,拐点持续存在。拐点地图的目标算子集为全部常用 attention 算子(MLA / MHA / GQA / MQA / DSA);具体扫描区间(cp / seq_len / 带宽网格)作为执行参数在实现 plan 阶段界定,不影响本 spec 的方法分层与一致性规则。
  • 修错带宽域先于加算子:跨芯片通信错走片内带宽是已知未修缺陷。在其上叠加新的未验证算子层会导致归因坍塌(分不清偏差来自计算还是带宽域)。
  • 最小子集:只补拐点地图证明对结论有影响的算子,不先验建全套。

集成点

  • 上游:mapping 层产出算子的指令 / 解析参数(shape / 精度 / 访存字节)。
  • 下游:各算子时间按依赖串成 attention / FFN 等复合算子的计算图,喂事件驱动时序层。
  • 与行为级内存模型:访存边带域标签是与未来行为级 NoC / SRAM / HBM 模型的契约边界——行为级模型按域接管访存时间。

引用

备选方案

维度G5 + 方法分层(选定)直接用 TPUPerf自造 trace 喂 TPUPerf
厂商中立是(参数化)否(编译期硬绑 ISA)否(trace 是厂商 ISA)
生成式 / sweep否(trace-driven,每点重编译)半(造 trace = 建 lowering)
多芯片端到端否(单芯片,c2c 远端是内存桩无计算)否(仍单芯片)
改动量级加模块(补算子方法)推翻范式重建地基建厂商 lowering + 仍缺多芯片

选择理由:最终需求的四属性(厂商中立 / 生成式 / 多芯片 / sweep),厂商参照仿真器满足 0/4、G5 满足 4/4(仅计算精度待补)。「生成式」「厂商中立」是范式属性不是功能开关——厂商仿真器的数据流(编译产物 → 指令解码 → cycle 仿真)与编译期硬件特化为「精确回放某颗厂商芯片」设计,改成「任意厂商任意配置 sweep」是换工具类别,不是加功能。自造 trace 只啃下生成式半样,造完仍单芯片(远端内存桩)、仍厂商锁定,且对计算 cycle 而言翻译闭式公式等价更省。厂商仿真器的正确角色是 G5 的计算标定 / 参照源(翻译公式 + 关键点 trace 校验),不是平台。根因:范式不匹配——厂商仿真器是芯片验证工具(trace-driven / cycle-accurate / 单芯片 / 厂商专属),G5 是部署探索工具(生成式 / 事件驱动 / 多芯片 / 厂商中立),两类工具不能廉价互转。完整四建模路径对比见附录 A。

非功能性需求

维度本 spec 的考虑
性能(仿真速度)访存受限算子 roofline 为 O(1) 解析,不进事件驱动瓶颈;指令级仅用于算力受限算子
性能(精度)相对可信;绝对门控(无真机锚点,继承前置 spec)。访存受限算子精度上界 = 带宽效率(±10-15%)
兼容性访存边带域标签是与未来行为级内存模型的前向兼容契约;新增算子瓶颈类别不破坏既有分层
可靠性一域一真理源规则防止双重计算这一失败模式
安全性 / 隐私N/A——内部仿真器

局限与后续工作

局限(本设计的代价)

风险 / 局限影响缓解措施
roofline 访存受限算子绝对值不可信继承无锚点门控;相对可信;待真机锚点
不规则算子(topk/sort)建模形态未定待拐点地图证明 DSA 需要后再定NEEDS CLARIFICATION;先做拐点地图
行为级内存模型尚未建roofline 访存边暂用峰值带宽占位带域标签预留升档;行为级来了按域替换
lowering 层对不规则算子始终缺失topk/gather 难指令级专用模型 + 厂商 trace 关键点校验,不自建不规则 lowering

后续工作

  • 拐点地图扫描(高优先级,前置:无,用现有解析评估器)——圈定有拐点的算子区间。
  • 跨芯片错带宽域修复 / CP 多芯片桥(A1)(高优先级,独立 spec)——加算子前先修。
  • 向量算子 roofline 建模(中优先级,前置:拐点地图圈定)——softmax / 归一化 / 激活等。
  • 不规则算子专用模型(中优先级,前置:拐点地图证明 DSA 需要)——topk / gather。
  • 行为级内存模型(中优先级,独立 spec)——SRAM bank / HBM 队列 / NoC 争用,按域替换 roofline。

验收标准

场景指标目标值测试方法
瓶颈分类可判定给定算子能逐条判出瓶颈类别 + 方法三类全覆盖、无歧义对算子集(GEMM/softmax/RMSNorm/RoPE/topk/gather)逐个判类
访存边可分离算子时长能分解为计算估计 + 带域访存流量每访存边有域标签检查算子输出含 bandwidth_domain
一域一真理源(契约验收,行为级模型落地后生效)同一域不会被 roofline 与行为级同时计时无双重计算行为级模型接入后,该域 roofline 估计被替换(非叠加)
升档换源(契约验收,行为级模型落地后生效)roofline → 行为级是换数据源计算估计不变,访存时间来源变注入行为级模型,验证访存时间路由
顺序合规拐点地图先于算子建模、修带宽域先于加算子顺序可核对检查后续 plan 的 Task 顺序

单元测试关键 case

  • softmax 判为访存受限 → roofline;GEMM 判为算力受限 → 指令级;topk 判为不规则 → 专用模型。
  • 一个 roofline 算子的访存边携带 bandwidth_domain 标签;注入该域行为级模型后,访存时间从行为级取、计算估计不变。

附录

附录 A:业界调研

LLM 推理仿真器建模算子计算时间的四条路径,按「是否需要自建 lowering / 是否厂商中立 / 是否生成式」对比:

路径代表自建 lowering厂商中立生成式(任意 shape)精度需要
Roofline / 解析ASTRA-sim、Calculon、GenZ±10-15%datasheet + η
Profile 实测Vidur否(实测含 lowering)否(只测过的 shape)真机
Trace-driven(消费编译输出)ASTRA-sim 2.0 (Chakra)、厂商仿真器否(消费现成 trace)否(只编译过的配置)厂商编译器输出
自建 mapperLLMCompass、SCALE-Sim是(仅规则算子)部分大工程,规则算子限定

@tbl-gcml-survey 算子计算时间建模四路径对比

本 spec 差异化:按瓶颈混合——算力受限算子走自建 mapper(路径四,已对 matmul 做),访存受限算子走 roofline 生成式(路径一,唯一既厂商中立又生成式,适配 sweep),不规则算子走专用模型 + trace-driven 关键点校验(路径三在关键点)。混合而非单选,对标 gem5 / ASTRA-sim 的混合精度。对访存受限算子选 roofline 而非 profile / trace,因为 CP 拐点扫描需要生成式任意 shape,profile(需真机)与 trace(需重编译)都不生成式。

引用(DOI 优先):

附录 B:实现说明

实现后补充,记录 spec 与实现的偏差。

附录 C:完整接口签名 / 数据结构

算子瓶颈分类的判定输入、访存边的带域标签数据结构在实现 plan 阶段细化。本 spec 正文只冻结概念模型与规则。