v0.8: 同步HTML

This commit is contained in:
2026-08-24 00:20:54 +00:00
parent 1dba7c94e1
commit e1a0fb80c8

View File

@@ -55,10 +55,13 @@ MathJax = {
<h2>二、符号与芯片参数约定</h2> <h2>二、符号与芯片参数约定</h2>
<table><tr><th>符号</th><th>含义</th><th>950PR 取值</th></tr> <table><tr><th>符号</th><th>含义</th><th>950PR 取值</th></tr>
<tr><td>C</td><td>AIC 核数aicNum</td><td>32</td></tr> <tr><td>C</td><td>AIC 核数aicNum</td><td>32</td></tr>
<tr><td>Q₁₆</td><td>单核 Cube BF16 峰值算力</td><td>486/C ≈ 15.2 TFLOPS</td></tr>
<tr><td>Q_AIV</td><td>AIV 向量求和吞吐64 核合计)</td><td>64×128 fp32/拍×1.65GHz ≈ 13.5 Tops/s</td></tr>
<tr><td>L1</td><td>每核 L1 Buffer</td><td>512KB</td></tr> <tr><td>L1</td><td>每核 L1 Buffer</td><td>512KB</td></tr>
<tr><td>L0A / L0B</td><td>每核 L0A / L0B</td><td>64KB / 64KB</td></tr> <tr><td>L0A / L0B</td><td>每核 L0A / L0B</td><td>64KB / 64KB</td></tr>
<tr><td>L0C</td><td>每核 L0CFP32 累加4B/元素)</td><td>256KB</td></tr> <tr><td>L0C</td><td>每核 L0CFP32 累加4B/元素)</td><td>256KB</td></tr>
<tr><td>L2</td><td>L2 Cache 容量 / 带宽</td><td>128MB / 5.2TB/s</td></tr> <tr><td>L2</td><td>L2 Cache 容量</td><td>128MB</td></tr>
<tr><td>W_L2</td><td>L2 读写带宽</td><td>5.2TB/s</td></tr>
<tr><td>W_GM</td><td>GM 带宽(读写共享)</td><td>1.6TB/s</td></tr> <tr><td>W_GM</td><td>GM 带宽(读写共享)</td><td>1.6TB/s</td></tr>
<tr><td>R₁₆</td><td>16bit 对应位宽算存比</td><td>≈607.5 FLOP/元素</td></tr> <tr><td>R₁₆</td><td>16bit 对应位宽算存比</td><td>≈607.5 FLOP/元素</td></tr>
<tr><td>dValue</td><td>单数据块内数据连续排布长度</td><td>推荐 256B/512B不建议 &lt;128B</td></tr> <tr><td>dValue</td><td>单数据块内数据连续排布长度</td><td>推荐 256B/512B不建议 &lt;128B</td></tr>
@@ -237,20 +240,31 @@ $$</div>
<div class="math">$$T_{SK} = \frac{T_{pipe}}{grid_K} + T_{Reduce} < T_{pipe} \;\Longleftrightarrow\; T_{Reduce} < T_{pipe}\left(1-\frac{1}{grid_K}\right)$$</div> <div class="math">$$T_{SK} = \frac{T_{pipe}}{grid_K} + T_{Reduce} < T_{pipe} \;\Longleftrightarrow\; T_{Reduce} < T_{pipe}\left(1-\frac{1}{grid_K}\right)$$</div>
<p>其中 $T_{pipe}=\max(T_{MTE2},\,T_{MMAD})$ 为不切 K 时单输出块的流水瓶颈。等价于 $T_{pipe} > \dfrac{grid_K}{grid_K-1}\cdot T_{Reduce}$——安全系数 α = grid_K/(grid_K-1) 由流水分析导出grid_K=2 时 α=2非经验值。</p> <p>其中 $T_{pipe}=\max(T_{MTE2},\,T_{MMAD})$ 为不切 K 时单输出块的流水瓶颈。等价于 $T_{pipe} > \dfrac{grid_K}{grid_K-1}\cdot T_{Reduce}$——安全系数 α = grid_K/(grid_K-1) 由流水分析导出grid_K=2 时 α=2非经验值。</p>
<p>StreamK case 的 M、N 小P&lt;C/2AI = 2MN/(M+N) 通常远低于 R₁₆ → 多数<b>访存 Bound</b>$T_{pipe} = T_{MTE2}$ 是瓶颈,条件为 $T_{MTE2} > \dfrac{grid_K}{grid_K-1}\cdot T_{Reduce}$。</p> <p>StreamK case 的 M、N 小P&lt;C/2AI = 2MN/(M+N) 通常远低于 R₁₆ → 多数<b>访存 Bound</b>$T_{pipe} = T_{MTE2}$ 是瓶颈,条件为 $T_{MTE2} > \dfrac{grid_K}{grid_K-1}\cdot T_{Reduce}$。</p>
<p>$T_{Reduce}$ 的构成(每输出块,部分和驻留 L2、AIV 归约):</p> <p>$T_{Reduce}$ 的构成(每输出块,部分和驻留 L2、AIV 归约;符号定义见 §二</p>
<div class="math">$$ <div class="math">$$
T_{Reduce} = \underbrace{\frac{grid_K \cdot MN \cdot 4\text{B}}{W_{L2}}}_{\text{AIC 写部分和}} + \underbrace{\frac{grid_K \cdot MN \cdot 4\text{B}}{W_{L2}}}_{\text{AIV 读回}} + \underbrace{\frac{grid_K \cdot MN}{Q_{AIV}}}_{\text{AIV 求和}} + \underbrace{\frac{MN \cdot outB}{W_{L2}}}_{\text{写回}} T_{Reduce} = \underbrace{\frac{grid_K \cdot MN \cdot 4\text{B}}{W_{L2}}}_{\text{AIC 写部分和}} + \underbrace{\frac{grid_K \cdot MN \cdot 4\text{B}}{W_{L2}}}_{\text{AIV 读回}} + \underbrace{\frac{grid_K \cdot MN}{Q_{AIV}}}_{\text{AIV 求和}} + \underbrace{\frac{MN \cdot outB}{W_{L2}}}_{\text{写回}}
$$</div> $$</div>
<p>代入数值求 K 闭式阈值(以计算 Bound 为例,$T_{pipe}=T_{MMAD}=2MNK/Q_{16}$</p> <p>求 K 闭式阈值(以计算 Bound 为例,$T_{pipe}=T_{MMAD}=2MNK/Q_{16}$;访存 Bound 时阈值更低</p>
<div class="math">$$ <div class="math">$$
K > \frac{grid_K^2}{grid_K-1}\cdot\underbrace{\frac{Q_{16}}{2}\Big(\frac{8\text{B}}{W_{L2}}+\frac{1}{Q_{AIV}}\Big)}_{\theta_c\,\approx\,11} + \frac{grid_K}{grid_K-1}\cdot\frac{Q_{16}\cdot outB}{2W_{L2}} K > \frac{grid_K^2}{grid_K-1}\cdot\theta_c,\qquad
\theta_c = \frac{Q_{16}}{2}\Big(\frac{8\text{B}}{W_{L2}}+\frac{1}{Q_{AIV}}\Big)
$$</div> $$</div>
<p>grid_K=2→K&gt;494→K&gt;628→K&gt;102。访存 Bound 时阈值更低θ_m ~ 0.04·MN/(M+N),可忽略)。</p> <p>代入数值:$Q_{16}$ = 486/32 ≈ 15.2 TFLOPS$W_{L2}$ = 5.2 TB/s$Q_{AIV}$ ≈ 13.5 Tops/s</p>
<p>注意 θ_c 对 workspace 落点敏感:部分和落 GM 时读写带宽从 5.2TB/s 降到 ~0.64TB/sθ_c 升至约 87。设计时应优先保证 workspace 驻留 L2。</p> <div class="math">$$
\theta_c = \frac{15.2\times10^{12}}{2}\Big(\underbrace{\frac{8}{5.2\times10^{12}}}_{1.54\,\text{ps/元素}} + \underbrace{\frac{1}{13.5\times10^{12}}}_{0.07\,\text{ps/元素}}\Big) = 7.6\times10^{12} \times 1.61\times10^{-12} \approx 12
$$</div>
<p>L2 读写1.54 ps/元素是主导项AIV 求和0.07)仅占 5%;多 tile 并行归约共享 L2/AIV 带宽的影响可忽略P &lt; C/2 块并行,归约总量 ~MB 级vs 单块 T_pipe ~μs 级)。</p>
<p>grid_K=2→K&gt;494→K&gt;668→K&gt;112。</p>
<p>注意 θ_c 对 workspace 落点敏感:部分和落 GM 时读写带宽从 5.2TB/s 降到 ~0.64TB/sθ_c 升至约 97。设计时应优先保证 workspace 驻留 L2。</p>
<ol class="tight"> <ol class="tight">
<li><b>工程约束</b>:归约顺序不定引入浮点非确定性,确定性等级 2/3 的业务禁用。</li> <li><b>工程约束</b>:归约顺序不定引入浮点非确定性,确定性等级 2/3 的业务禁用。</li>
</ol> </ol>
<p><b>源码对照</b><code>batch_matmul_v3_basic_streamk_tiling.cpp</code> 中 K 的固定门槛为 <code>CeilAlign(K,256) ≥ max(8192, aicNum×256B/dtype)</code><code>aicNum×256B/dtype</code> 对应条件 2 的 dValue 推荐值。修正后的归约阈值θ_c≈11远低于 8192——说明 8192 的主要动机不是归约代价而是摊薄固定开销workspace 建立、归约同步、AIV 启动),是条件 2/3 的保守合并近似。</p> <p><b>源码对照</b><code>batch_matmul_v3_basic_streamk_tiling.cpp</code> 中 K 的固定门槛为 <code>CeilAlign(K,256) ≥ max(8192, aicNum×256B/dtype)</code></p>
<ul class="tight">
<li><code>aicNum×256B/dtype</code> = 32×128 = 4096BF16= <b>dValue 下限256B在最大 grid_K=C 下的保障</b>——对应条件 2</li>
<li><code>8192</code> = 32×256 = C×512BBF16= <b>dValue 推荐值512B在最大 grid_K=C 下的保障</b>——同为条件 2取推荐值而非下限。</li>
</ul>
<p>max 取更严格的 8192。修正后的归约阈值θ_c≈12grid_K=32 时 K&gt;396远低于 8192说明 <b>8192 的绑定约束是 dValue条件 2不是归约代价条件 3</b>。源码不动态计算 grid_K用固定阈值同时覆盖条件 2 的最保守情形和条件 3是两条条件的保守合并近似。</p>
<h3>实现方案</h3> <h3>实现方案</h3>
<p><b>核间组织</b>:先按 B/M/N 切出输出块,剩余核预算折成 K 向份数:</p> <p><b>核间组织</b>:先按 B/M/N 切出输出块,剩余核预算折成 K 向份数:</p>
<div class="math">$$ <div class="math">$$