v0.6 修订:数值精确化
This commit is contained in:
@@ -320,7 +320,7 @@ $$</div>
|
||||
<p>只与 K、outB 有关(K 越小,单位时间输出越密)。例(BF16 输出,C·Q₁₆=432 TFLOPS):K=512 → 844 GB/s;K=256 → 1.69 TB/s,已超 GM 总线——此时<b>任何策略都写出 Bound</b>,L2 缓冲只能削峰(fixpipe 以 5.2TB/s 写 L2 吸收突发),平均速率仍受总线限制,应预期 Fixpipe 成为 $T_{total}$ 的 max 项。</p>
|
||||
<p><b>分场景决策</b>:</p>
|
||||
<p>**场景 A:$S_{in} + S_{out} \le L2$(全驻留)**。输入读一遍($r_{in}=1$),输出驻留 L2(dirty)异步回写 GM——写出走 5.2TB/s L2 写口,不与读争,也削平了 GM 写突发。无需切分。</p>
|
||||
<p>**场景 B:$S_{in} \le L2$ 但 $S_{in} + S_{out} > L2$(输入能驻留,加上输出超了)<b>。</b>输入驻留、输出直写 GM**(fixpipe L0C→GM,不占 L2),保住 $r_{in}=1$;校验总线:$(S_{in} + S_{out})/T_{MMAD} \le W_{GM}$。例:B=8、M=N=4096、K=512、BF16——$S_{in}$=64MB ≤ L2,$S_{out}$=256MB 直写 GM;T_MMAD≈318µs,总流量速率 (64+256)MB/318µs ≈ 1.06TB/s < 1.6TB/s ✓。</p>
|
||||
<p>**场景 B:$S_{in} \le L2$ 但 $S_{in} + S_{out} > L2$(输入能驻留,加上输出超了)<b>。</b>输入驻留、输出直写 GM**(fixpipe L0C→GM,不占 L2),保住 $r_{in}=1$;校验总线:$(S_{in} + S_{out})/T_{MMAD} \le W_{GM}$。例:B=8、M=N=4096、K=512、BF16——$S_{in}$≈67MB ≤ L2,$S_{out}$≈268MB 直写 GM;T_MMAD≈318µs,总流量速率 (67+268)MB/318µs ≈ 1.05TB/s < 1.6TB/s ✓。</p>
|
||||
<p>**场景 C:$S_{in} > L2$(输入本身超)**。必须 L2 切分。输出直写 GM 以最大化 $L2_{read}$,切分数满足</p>
|
||||
<div class="math">$$
|
||||
mL2TileNum \times nL2TileNum \;\ge\; \frac{S_{in}}{L2_{read}}
|
||||
@@ -329,7 +329,7 @@ $$</div>
|
||||
<div class="math">$$
|
||||
transConflict = \max\big(\lceil C / mCnt \rceil,\; \lceil C / nCnt \rceil\big) \le 6
|
||||
$$</div>
|
||||
<p>即同一时刻并发核访问同一 A/B 块的最大冲突数不超过阈值(经验值 6);切分方案中优先选尾波不满载占比小(拖尾 < 一半)的。遍历大方向由 calOrder 决定(0=M 优先、1=N 优先),按形状选共享矩阵更能驻留 L2 的方向。例:B=64、M=N=2048、K=1024、BF16——$S_{in}$=512MB > L2,输出直写($L2_{read}$=128MB),切 3×2=6 块(每块输入约 89MB ≤ 128MB);总流量 1GB,T_MMAD≈1.27ms,速率 844GB/s < 1.6TB/s ✓。</p>
|
||||
<p>即同一时刻并发核访问同一 A/B 块的最大冲突数不超过阈值(经验值 6);切分方案中优先选尾波不满载占比小(拖尾 < 一半)的。遍历大方向由 calOrder 决定(0=M 优先、1=N 优先),按形状选共享矩阵更能驻留 L2 的方向。例:B=64、M=N=2048、K=1024、BF16——$S_{in}$≈537MB > L2,输出直写($L2_{read}$=128MB),切 3×2=6 块(每块输入约 89MB ≤ 128MB);总流量约 1.07GB,T_MMAD≈1.27ms,速率 844GB/s < 1.6TB/s ✓。</p>
|
||||
<p>补充:若输出会被后续算子立即消费(融合场景),输出驻留 L2 让下游读命中,场景 B/C 的策略反过来;本文按单算子边界分析。</p>
|
||||
<p><b>4、核内 tiling</b>:$M^t N^t \cdot 4\text{B} \cdot DB \le L0C$;$M^t K^t \cdot \text{dtype} \cdot 2 \le L0A$、$K^t N^t \cdot \text{dtype} \cdot 2 \le L0B$;内轴按 dValue 256B/512B 对齐;L1 按容量开双缓冲,余量充足开 4 buffer。</p>
|
||||
<p><b>5、内部特化(参数极限,不是独立分支)</b>:单边无 batch 且该侧矩阵小($M \le 256$、$MK\cdot\text{dtype}\cdot 2 \le L1$、对侧每核循环 ≥4 轮)时小侧整个常驻 L1、只搬一次(L1 全载)。</p>
|
||||
|
||||
Reference in New Issue
Block a user