G5 softmax 算子建模设计规格
版本:1.0.0 状态:Accepted 创建日期:2026-06-22 最后更新:2026-06-22 作者:xiang.li 前置:G5-计算算子建模方法分层设计规格、G5-计算建模设计规格
版本号规则 (SemVer):
- major (X.0.0):建模形态重构(吞吐 cycle ↔ 别的方法)、合成语义变更
- minor (1.X.0):新增向量算子复用本契约、扩展访存边带域规则(向后兼容)
- patch (1.0.X):修正笔误、补充说明
变更历史
| 版本 | 日期 | 变更说明 |
|---|---|---|
| 1.0.0 | 2026-06-22 | 初版:softmax 向量算子吞吐 cycle 建模 + LMEM 访存边带域 + 与 fa2 串行合成 + 接入 G5 attention 发射 |
@tbl-spec-gsm-01 文档变更历史
概述
本 spec 定义 G5 仿真中 softmax 向量算子的计算时长建模:把当前「在 attention 发射时被完全丢弃(计为 0)」升级为「算子级向量吞吐 cycle 模型 + 携带 LMEM 带宽域标签的访存边」,并将其串行合成进 attention 计算时长。本 spec 是父 spec 方法分层的首个向量算子落地,建立向量算子的建模契约——后续 topk/gather/归一化/激活按同一契约接入。
softmax 时长由两件事产出:向量吞吐 cycle(按 softmax 子步骤的对齐元素数除以向量单元吞吐)与访存边(score tile 在片上 LMEM 的读写,携带宽域标签)。二者按父 spec 一致性规则合成,再串行加进 attention 计算时长,喂 G5 事件驱动时序层。
与父 spec 分类的关系(细化非推翻):父 spec 把 softmax 归「访存受限 → roofline max(算力, 访存)×η」,本 spec 据 fused-attention 的实际存储层级细化为「计算吞吐主导」。二者不矛盾:父 spec 的「访存受限」是 HBM-roofline 语境的粗分类;fused-attention 下 score 恒驻片上 LMEM,LMEM 带宽远高于 HBM,故同一 combine 框架(父 spec eq:gcml-separable)内、在 LMEM 域上向量吞吐项主导访存项。这是父 spec 分层在具体存储域内的细化——combine 框架未被破坏(取 max 与相加都是 combine 的实例)。父 spec roofline 的效率因子 η 在本 spec 的闭式吞吐公式中由子步骤 op_count 与向量单元 eu 利用率参数承接,不再单列。
背景
G5 的 attention 发射当前只算两个矩阵乘(QK^T、softmax·V),softmax 向量算子整块被丢弃,理由是「相对矩阵乘可忽略」。三个量化问题:
- "可忽略"假设未经验证且被证伪:实测 softmax 占 attention 矩阵乘时间 MHA 29%、MLA 23%、DSA 23%(各取代表性配置),且不随序列长度变化(softmax 与矩阵乘均随 QS·KS 规模变,比值由 head 维定)。丢弃使 G5 的 attention 计算时长系统性低估 23–29%。
- 两条评估路径口径矛盾:解析(Math)侧的精评估器已建 softmax 向量模型并将其串行计入 attention 时长,G5 侧丢弃。同一算子在两条路径上一个计入、一个不计,归因坍塌。
- 向量算子建模契约缺失:G5 计算侧只有矩阵乘(指令级翻译)契约,向量类算子(softmax / 归一化 / 激活)如何建模、访存边如何归带宽域、如何与矩阵乘合成,均无定义。
驱动力:父 spec 的顺序约束已圈定 DSA/MHA 为有拐点、需精修的算子,二者都含 softmax。要让 DSA/MHA 的上下文并行结论可信,attention 各算子的计算时长必须齐全,softmax 是其中被丢弃的一项。
名词定义
下表钉死本 spec 用到的核心名词,后文统一语言。
| 名词 | 定义 | 与易混淆概念的区分 |
|---|---|---|
| softmax 向量算子 | attention 中把 QK^T 得到的 score 矩阵按行归一化为概率的逐元素 + 归约运算(含 max / 减 / exp / 求和 / 除) | 与矩阵乘区分:无收缩维乘加,是向量/归约运算 |
| 向量吞吐 cycle | softmax 各子步骤的对齐元素数除以向量单元每 cycle 吞吐,得到的纯计算节拍数 | 与指令级 cycle 区分:不下到厂商指令,算子级吞吐解析 |
| 子步骤 op_count | softmax 分解为若干向量子步骤,每步对其输入形状施加的等效运算次数 | exp 等非线性步的 op_count 大于 1(多项式展开),算法建模量,非厂商 lowering |
| score tile | flash-attention 分块下,QK^T 输出的一个分块(QS_tile × KS_tile),softmax 在其上运算 | 与全量 score 矩阵区分:全量从不物化,仅分块驻留片上 |
| LMEM 带宽域 | softmax 访存边占用的物理带宽资源类别 = 片上本地存储总线 | 与 HBM 域区分:fused attention 下 score 不溢出片外 |
| 访存边 | softmax 操作数(score tile 读 + 概率写)从片上存储读写的时间,携带宽域标签 | 与矩阵乘访存边正交:softmax 只读写 score↔prob,不读写 Q/K/V |
| 合成语义 | softmax 时长与 attention 矩阵乘时长的组合方式 = 串行相加 | 与取 max 区分:取 max 会使较小的 softmax 被矩阵乘掩盖 |
| 吞吐主导 | softmax 时长由向量计算吞吐决定,访存边时长在片上高带宽下次要 | 与访存受限区分:片上 LMEM 带宽高,瓶颈在向量单元吞吐 |
| 厂商中立抽象 | 向量单元的参数化抽象(每 lane eu 数 + lane 数 + 子步骤 op_count),具体芯片作参数实例 | 与复刻厂商 SFU/AR 引擎 cycle 模型区分 |
| unvalidated 门控 | 底层未标定时,绝对计算时长不对外作绝对承诺,只支持相对比较 | 继承父 spec 与前置计算建模 spec |
目标与非目标
目标 / 需求清单(逐条可核对):
- 需求:softmax 计算时长用向量吞吐 cycle 模型——各子步骤的对齐元素数除以向量单元吞吐,子步骤 op_count(含 exp 的多项式展开步数)与每精度向量吞吐从参数实例加载,公式结构与参数分离。不走指令级 lowering。
- 需求:softmax 时长串行相加进 attention 计算时长(与解析侧精评估器口径一致),不取 max。
- 需求:softmax 访存边显式携带 LMEM 带宽域标签,落地父 spec 的「访存边可分离 + 带域标签」机制于首个向量算子。
- 需求:softmax 访存边字节口径为 score tile 的片上读 + 概率写,与 QK^T / PV 矩阵乘的访存边不重复计(矩阵乘访存边覆盖 Q/K/V/输出,softmax 只覆盖 score↔prob)。
- 需求:建模参数(每精度向量吞吐、lane 数、子步骤 op_count、LMEM 带宽)缺字段时 raise 带字段名,不静默置零或取默认值。
- 需求:厂商中立——向量单元抽象为参数化吞吐模型,SG2262 作参数实例;TPUPerf 仅作参数参照与数量级校验,不复刻其引擎 cycle 模型。
- 需求:绝对计算时长在底层未标定时门控 unvalidated(继承父 spec),相对/趋势可信。
非目标(明确不做):
- 非目标:topk / gather 等不规则算子建模(DSA 专属,另立逐篇 spec)。
- 非目标:向量单元与矩阵乘单元的真并行重叠、共享 LMEM 带宽争用、compute↔comm 真依赖(属后续「真 overlap」工作,本篇合成语义为串行相加)。
- 非目标:行为级片上存储模型(LMEM bank 冲突 / 队列)。访存边带域标签为其预留升档接口,本篇用峰值带宽占位。
- 非目标:复刻 TPUPerf 的 SFU/AR 指令级 cycle 模型。本篇为算子级吞吐解析,TPUPerf 作参照。
- 非目标:绝对计算时长精度。无真机锚点,继承父 spec 的相对可信 / 绝对门控。
- 非目标:归一化 / 激活 / RoPE 等其余向量算子。它们复用本篇契约,但具体 op_count 各自定义,不在本篇。
用例说明
假设本设计已实现,一个开发者评估 prefill 下某 attention 算子的计算时长:
- 输入:一个 fused attention 核描述——
B(batch×head), QS, KS, QD, VD、精度 BF16,已切分为若干 (QS_tile, KS_tile) 分块。 - 矩阵乘时长(前置 spec 已建):QK^T 与 PV 两个矩阵乘的计算 cycle + 访存边,访存边覆盖 Q/K/V/输出。
- softmax 向量吞吐 cycle:对 score tile(QS_tile × KS_tile),按 softmax 子步骤的对齐元素数除以向量单元吞吐,得向量 cycle,除以频率得 softmax 计算时长。子步骤 op_count(max/减/exp/求和/除)与每精度向量吞吐从 SG2262 参数实例加载。
- softmax 访存边:score tile 的片上读 + 概率写字节数除以 LMEM 带宽,标注带宽域 = LMEM 总线;不计入 Q/K/V(属矩阵乘访存边)。
- 合成:attention 计算时长 = QK^T 时长 + softmax 时长 + PV 时长(串行相加)。softmax 时长本身 = combine(向量 cycle 时长, 访存边时长),按父 spec 一致性规则,片上高带宽下吞吐主导。
- 输出:含 softmax 的 attention 计算时长(ns),喂 G5 事件驱动时序层。开发者扫不同序列长度时,softmax 占比稳定(约 23–29%),不再被丢弃;请求绝对 SLO 判定时 unvalidated 门控返回相对比较。
详细设计
概念模型
softmax 算子时长由两个分量合成,再串行加进 attention:
| 分量 | 来源 | 物理含义 |
|---|---|---|
| 向量吞吐 cycle 时长 | 子步骤对齐元素数 ÷ 向量单元吞吐 ÷ 频率 | 向量单元处理 score 元素的纯计算节拍 |
| 访存边时长 | score tile 字节 ÷ LMEM 带宽 | score 读 + 概率写的片上读写等待 |
@tbl-gsm-two-parts softmax 算子时长的两个分量
softmax 算子时长按父 spec 的一致性规则合成(见父 spec eq:gcml-separable):
$$\begin{equation} t_{\text{softmax}} = \text{combine}\left(t_{\text{vec}},\ t_{\text{mem}}^{\text{lmem}}\right) \label{eq:gsm-op-combine} \end{equation}$$片上 LMEM 带宽高,$t_{\text{vec}}$ 主导(吞吐主导)。attention 计算时长按串行相加纳入 softmax:
$$\begin{equation} t_{\text{attn}} = t_{\text{QK}^\top} + t_{\text{softmax}} + t_{\text{PV}} \label{eq:gsm-attn-serial} \end{equation}$$向量吞吐 cycle 模型
公式结构是接口契约,op_count 与吞吐常数从参数实例加载。softmax 分解为若干向量子步骤,每步对其输入形状施加等效运算。记 $L$ = lane 数、$E_v$ = 每 lane 向量 eu 数(按精度)、$Q$ = QS_tile、$K$ = KS_tile、$c_s$ = 第 $s$ 步的 op_count、$\sigma_s$ = 第 $s$ 步的形状类型(全行 $Q{\times}K$ 或归约 $Q{\times}1$)。
向量 cycle 为各子步骤对齐元素数之和:
$$\begin{equation} \text{cycle}_{\text{vec}} = \sum_{s} c_s \cdot \big\lceil Q / L \big\rceil \cdot \phi_s(K) \label{eq:gsm-vec-cycle} \end{equation}$$其中 $\phi_s(K) = \lceil K / E_b \rceil$(全行步,$E_b$ 为按精度的列对齐基数)或 $\phi_s(K) = 1$(归约/标量步)。向量时长:
$$\begin{equation} t_{\text{vec}} = \frac{\text{cycle}_{\text{vec}} \cdot B}{E_v \cdot L \cdot f_v} \label{eq:gsm-vec-time} \end{equation}$$$B$ = batch×head 块数,$f_v$ = 向量单元频率。exp 的代价由其 op_count $c_s > 1$ 表达(多项式展开多段累加),不可折成扁平峰值吞吐标量——否则丢失非线性步的相对代价、且无法与参照源对齐校验。
设计原理:softmax 单遍处理 score、无收缩维乘加,时间由向量单元吞吐决定。op_count 是算法建模量(softmax 的运算分解),跨厂商通用;每精度 eu / lane / 对齐基数是参数实例。这与矩阵乘的「公式结构 + 参数实例」分离原则一致,且绕开厂商专属 lowering。
访存边与带宽域
softmax 访存边覆盖 score tile 的片上读与概率写:
$$\begin{equation} t_{\text{mem}}^{\text{lmem}} = \frac{\text{bytes}_{\text{score}} + \text{bytes}_{\text{prob}}}{\text{BW}_{\text{lmem}}} \label{eq:gsm-mem-edge} \end{equation}$$字节口径:score tile 读 + 归一化概率写,量级 $2 \cdot B \cdot Q \cdot K \cdot \text{dtype}$(系数 2 的前提:概率以 score 同精度写回;若概率降精度写,口径改为 $B \cdot Q \cdot K \cdot (\text{dtype}_{\text{score}} + \text{dtype}_{\text{prob}})$);online-softmax 的逐行 max / 求和为 $B \cdot Q$ 标量量级,计入但次要。该访存边带宽域标签 = LMEM 总线,落地父 spec 的带域标签机制于首个向量算子。
不重复计约束:softmax 访存边只覆盖 score↔prob;Q/K/V 读与输出写属 QK^T / PV 矩阵乘的访存边(前置 spec),softmax 不重复计入。score 矩阵在 fused attention 下从不物化到片外——分块驻留片上,长上下文靠缩小分块容纳,故 softmax 访存边恒为 LMEM 域,无 HBM 分支。
升档接口(与参照源的访存项口径):本 spec 建独立访存边仅作带域升档挂载点,当前 combine 下吞吐项主导使其不进时间主导项——与 TPUPerf「向量算子无独立访存 roofline 项」在时间贡献上等价,差别仅在本 spec 保留了带域标签挂载点供未来行为级模型接管。本篇 LMEM 带宽用峰值占位(继承前置 spec,访存层 bank 冲突不建模);带域标签使未来行为级 LMEM 模型按域接管该访存边时间,无需改本模型。
合成语义与边界
softmax 与 attention 两个矩阵乘串行相加(见 ),与解析侧精评估器口径一致。理由:取 max 会使较小的 softmax 被矩阵乘掩盖、等于不建模,违背修正"丢弃 softmax"的目的。
与多芯片 overlap 边界的关系:上下文并行多芯片路径的「overlap 聚合 max」是 comm/compute 级边界(计算与跨芯片通信的重叠),不涉及 compute 内部。compute 内部 softmax 与矩阵乘串行相加,二者正交。向量单元与矩阵乘单元的真并行重叠、共享 LMEM 带宽争用属后续「真 overlap」工作,本篇不做——本篇下 softmax 计算时长抬高 23–29%,使 G5 与解析侧口径一致,不产出比解析侧更优的绝对数字。
参数缺字段处理
建模参数(每精度向量 eu 数、lane 数、子步骤 op_count、LMEM 带宽)缺字段时 raise 带字段名与配置来源,不静默置零或取默认。理由:静默置零会使 softmax 悄悄退回"被丢弃"状态、复现本 spec 要修的缺陷;取默认值违反项目配置加载规则。
标定边界与门控
模型分两层验收,互不混淆:
- 形态一致性(本 spec 可证伪的核心):给定同一 score tile 形状与精度,G5 的 softmax 向量 cycle 严格等于解析侧精评估器复用的同一 softmax 吞吐公式输出,无容差。验的是"两条路径口径是否一致",不是"对硅是否准"。
- 对硅正确性(本 spec 不承诺):向量吞吐常数未对硅验证,继承未知绝对精度。无真机锚点时绝对计算时长不可证伪。
门控规则:底层未取得真机标定锚点时 unvalidated 标志置位,端到端绝对指标只返回相对比较(继承父 spec 与前置计算建模 spec)。
集成点
- 上游:G5 mapping 层产出 fused attention 核描述(B/QS/KS/QD/VD + 精度 + 分块),含 score tile 形状。
- 下游:本模型产出含 softmax 的 attention 计算时长(ns),喂 G5 事件驱动时序层。
- 与矩阵乘建模的边界:QK^T / PV 矩阵乘时长与访存边由前置 spec 产出;softmax 时长与访存边由本 spec 产出,串行相加合成。两者访存边的带宽域标签共用同一机制,字节口径互不重叠。
- 与解析侧的关系:解析侧精评估器与 G5 复用同一 softmax 吞吐公式形态,形态一致性是验收锚点;G5 额外把 softmax 接入事件驱动发射,为后续真 overlap 工作铺位。
引用
- 父 spec 方法分层(softmax → 访存受限/吞吐主导):G5-计算算子建模方法分层设计规格。
- 前置矩阵乘建模 + 访存边 + overlap 合成体例:G5-计算建模设计规格。
- 拐点地图(圈定 DSA/MHA 需精修、含 softmax):拐点地图报告。
- TPUPerf(向量算子 throughput-cycle 形态参照源,非平台):算能内部 SystemC 仿真器,SFU(exp)+ AR(归一化)单元。
备选方案
| 维度 | 向量吞吐 cycle(选定) | 扁平峰值吞吐 roofline | 指令级翻译 | 取 max 合成 |
|---|---|---|---|---|
| softmax 时长来源 | 子步骤 op_count × 对齐元素 ÷ 吞吐 | FLOPs / 峰值向量吞吐 × η | 厂商每指令 cycle + lowering | — |
| 表达 exp 非线性代价 | 有(op_count > 1 多段) | 无(扁平标量抹平) | 有 | 取决于底层 |
| 厂商中立 | 是(参数化吞吐) | 是 | 否(需公司专属 lowering) | — |
| 与参照源可对齐校验 | 是(形态同 TPUPerf/解析侧) | 否(丢 op_count 细节) | 是但需 lowering | — |
| softmax 是否可见 | 是(串行计入) | 是 | 是 | 否(被矩阵乘掩盖) |
选择理由:向量吞吐 cycle 在四条上胜出——(1) op_count 表达 exp 等非线性步的相对代价,扁平 roofline 标量抹平这层;(2) 厂商中立、复用解析侧已验证的同一公式形态,形态一致性可严格断言;(3) 绕开父 spec 已否决的指令级 lowering(公司专属、不存在于 G5/TPUPerf);(4) 串行相加使 softmax 可见,取 max 会使其被矩阵乘掩盖、等于不建模。否决其余三者理由见表内对应行。父 spec 附录 A 已有四建模路径(roofline/profile/trace-driven/自建 mapper)完整业界对比,本篇为其方法分层的算子级落地,不重做业界调研。
非功能性需求
| 维度 | 本 spec 的考虑 |
|---|---|
| 性能(仿真精度) | 形态一致性:G5 softmax cycle 严格等于解析侧同一吞吐公式输出。绝对精度:不承诺(无真机锚点),相对排序可信 |
| 性能(仿真速度) | 向量 cycle 为子步骤求和的闭式标量计算,O(步数),不进事件驱动热循环瓶颈 |
| 兼容性 | 向量单元参数(每精度 eu 数 / lane / op_count / LMEM 带宽)下沉芯片 YAML,需同步更新 configs/chips/_template.yaml;新增字段不破坏既有矩阵乘配置 |
| 可靠性 | 参数缺字段 raise,防 softmax 静默退回"被丢弃"状态 |
| 安全性 / 隐私 | N/A——内部仿真器 |
局限与后续工作
局限(本设计的代价)
| 风险 / 局限 | 影响 | 缓解措施 |
|---|---|---|
| A1 边界下 softmax 与矩阵乘串行相加 | 不建模向量∥矩阵真并行,attention 时长偏保守(高估重叠不足那部分) | 串行是保守选择(高估比低估安全);真 overlap 留后续 |
| 向量吞吐常数未对硅验证 | softmax 绝对时长精度未知 | 门控 unvalidated;形态一致性可证伪;待真机锚点升绝对 |
| LMEM 带宽用峰值占位 | softmax 访存边偏乐观(但吞吐主导,影响小) | 带域标签预留升档;获取 SRAM 时序 spec 后修订 |
| 访存层 bank 冲突 / EU 利用率细节不建模 | 向量 cycle 略偏理想 | 标注;与前置矩阵乘 spec 同一边界 |
| 本篇下 G5 数字≈解析侧、不更优 | A1 价值是一致性修复 + 铺位,非更优绝对值 | 真 overlap(向量∥矩阵 + LMEM 争用)后 G5 才超解析侧 |
| TPUPerf 数量级校验未做 | "向量 cycle 与 TPUPerf SFU/AR 数量级一致"目标暂无验收落点 | 依赖 TPUPerf 数据获取;获取后补数量级(非严格相等)校验,当前仅形态一致性可证伪 |
后续工作
- 真 overlap 建模(中优先级,前置:本篇 Accepted)——向量单元与矩阵乘单元并行 + 共享 LMEM 带宽争用,使 G5 计算侧超越解析侧串行相加。
- topk / gather 不规则算子建模(中优先级,前置:本篇 Accepted 提供向量算子契约模板)——DSA 专属,各自逐篇。
- 其余向量算子(低优先级,复用本篇契约)——归一化 / 激活 / RoPE / 逐元素,各自定义 op_count。
- 行为级 LMEM 模型(中优先级,独立 spec)——按带域标签接管 softmax 访存边时间。
- 真机标定锚点(高优先级,前置:获得真机实测渠道)——升相对到绝对。
验收标准
| 场景 | 指标 | 目标值 | 测试方法 |
|---|---|---|---|
| softmax 向量 cycle 形态一致 | G5 softmax cycle vs 解析侧同一吞吐公式 | 严格相等(无容差) | 同 score tile 形状 + 精度,两路比对 |
| attention 时长含 softmax | G5 attention 计算时长 | 含非零 softmax 项(= QK^T + softmax + PV) | 跑 attention,验 softmax 分量非零且为串行相加 |
| 串行合成语义 | softmax 与矩阵乘的组合 | 相加(非取 max) | 固定各分量时长,验合成 = 相加 |
| 访存边带域 | softmax 访存边标签 | = LMEM 带宽域 | 检查访存边携带 bandwidth_domain = lmem |
| 字节不重复计 | softmax 访存边 vs 矩阵乘访存边 | score↔prob 与 Q/K/V/输出无重叠 | 比对两访存边覆盖的张量 |
| 参数缺字段 | 缺向量 eu / lane / op_count / LMEM 带宽 | raise 带字段名 | 删配置字段,验抛错而非置零 |
| 厂商中立 | 换参数实例(改每精度 eu / lane / op_count) | cycle 随参数变、公式不变 | 注入不同 YAML 参数实例 |
| 门控 | unvalidated 置位时绝对查询 | 返回相对比较、不返回绝对值 | 置位标志,调绝对指标查询 |
单元测试关键 case:
- softmax,
B, QS, KS给定,BF16 → 向量 cycle 等于解析侧同一吞吐公式同输入输出。 - attention 全核 → softmax 分量非零且 attention 时长 = 三项(QK^T + softmax + PV)严格串行相加。(占比 23–29% 是 MHA/MLA/DSA 各自代表性配置下的实测参照、随 head 维变,不作通用断言;如要断言占比须钉死 (算子, shape, 精度) 三元组。)
- 删向量 eu 配置字段 → raise 带字段名,不静默置零。
- 换 lane / eu 参数实例 → 向量 cycle 按对齐项变化,公式结构不变。
附录
附录 A:业界调研
本篇是父 spec 方法分层的算子级落地,完整业界四路径对比(roofline / profile / trace-driven / 自建 mapper)见父 spec 附录 A,不重做。本篇方法(向量吞吐 cycle)的关键参照点:
| 参照源 | softmax 时长建模方式 | 与本篇关系 |
|---|---|---|
| TPUPerf(算能 SystemC) | SFU(exp,多项式展开多段累加)+ AR(归一化)逐指令 throughput-cycle,操作数恒 LMEM-resident,无独立访存 roofline 项 | 形态参照源:本篇取其吞吐主导形态,不复刻其引擎 cycle |
| Calculon | softmax 逐算子闭式解析(独立于矩阵乘的式子) | 同为算子级解析、串行喂上层 |
| 解析(Math)侧精评估器 | 同一 softmax 吞吐公式,串行计入 attention(gemm + vec) | 形态一致性锚点:G5 复用同一公式 |
@tbl-gsm-survey softmax 时长建模参照点
本篇差异化:在 G5 事件驱动发射中复用解析侧已验证的同一 softmax 吞吐公式形态,使两条评估路径口径一致、并为后续向量∥矩阵真 overlap 铺位。相对扁平 roofline+η:用子步骤 op_count 保留 exp 等非线性步的相对代价。
附录 B:实现说明
- op_count 步表为代码内固化常量:op_count 是跨厂商通用的 softmax 算法分解(所有芯片相同),实现为代码常量而非 YAML 字段——放 YAML 会在每个芯片配置重复同一份、易漂移。芯片专属参数(eu / lane / 频率 / LMEM 带宽)仍从 YAML 加载。正文「op_count 是算法建模量、跨厂商通用」与此一致。
- softmax 吞吐除数取 eu_per_core 标量:吞吐公式除数用解析侧已解析的 eu_per_core 标量(= 向量单元每 lane eu × 向量单元 lane 数),与解析侧 bit-exact 同源;未在实现端按每精度 eu_per_lane 重算(softmax 固定 BF16,单精度足够)。
附录 C:SG2262 参数实例
SG2262 向量单元(softmax)的芯片专属参数取值落地芯片配置 YAML,公式正文不含裸字面量。例外:op_count 步表是跨厂商通用的 softmax 算法分解、非芯片字段,代码内固化为常量(见附录 B),不进 YAML。
| 参数 | 含义 | 来源 |
|---|---|---|
| lane 数 $L$ | 每 core lane 数 | 芯片配置 cores.lanes_per_core |
| 向量 eu 数 $E_v$(每精度) | 每 lane 向量执行单元数,BF16 / FP16 / INT 各自取值 | 芯片配置 vector.eu_per_lane(按精度独立) |
| 列对齐基数 $E_b$ | 全行步的 KS 维对齐基数 | 由 eu 数 / lane / 精度字节推导 |
| 子步骤 op_count $\{c_s, \sigma_s\}$ | softmax 各子步骤(max/减/exp/求和/除等)的运算次数与形状类型 | softmax 算法分解(厂商中立、跨芯片相同),代码内固化常量、非 YAML 字段;exp 步 op_count > 1 |
| 向量单元频率 $f_v$ | 向量单元时钟 | 芯片配置 frequency |
| LMEM 带宽域 $\text{BW}_{\text{lmem}}$ | 片上本地存储总线带宽 | 芯片配置 lmem.bandwidth(峰值占位,绝对值不可信) |
@tbl-gsm-sg2262-params SG2262 向量单元(softmax)参数实例
向量 eu 数按精度各自从配置独立加载(非由某基准算术推导)。子步骤 op_count 是 softmax 的算法分解、跨厂商通用,非厂商 lowering。LMEM 带宽真实参数待 SRAM 时序 spec 获取后填入。缺任一字段加载时 raise 带字段名,不取默认。