用户裁决: cube_peak_tflops 取白皮书表3-1 "Cube算力" 单行 (不含 Vector)。 - 数值: 950PR 486->432, 950PR_C28 425->378, 950DT 547->486, 950DT_C32 486->432, 950DT_C28 425->378; 单核全系列精确 13.5T (16^3 MAC/拍 x 1.65GHz), 28 核档 0.06% 取整偏差随之消失 - 传导 (无结构改动, 全部经 q16/q_cube/r16 派生): MMAD 时延 x486/432 (+12.5%); R16 607.5->540 (MergeBatch 条件5/b0 上限); StreamK θ_c 12.24->10.9; ASW 面积/周长分界 93.5->83.1, MMAD/FIX 304->270 - 文档同步: README, docs/00 (R16 公式), 04 (607.5 实例), 05 (硬件事实/复核算例), 06/07 (翻出阈值 187->166), 05_StreamK (θ_c 及 K 阈值 396->360); 理论归档 (BMM算子优化分析_Release/) 与历史测评报告不动 - 验证: 单测 88/88; examples 重生成 —— recommend 27/44 行变化 (计算Bound 行精确 +12.5%; b8_m32768_n2048_k512 瓶颈 MTE2->MMAD 翻转; 17 行访存主导不变), plans.csv 仅 merge_demo_k_trunc note 的算存比上限 23.7->21.1 一处文案; 压力回归 10000 例干净, MergeBatch 386->392 / IterBatch 2389->2384 (R16 下移致 b0 上限收小, 边界 case 换边, 预期行为)
43 KiB
43 KiB
| 1 | case_id | batch_a | batch_b | m | n | k | dtype_a | dtype_b | dtype_c | trans_a | trans_b | has_bias | out_nd | deterministic_level | plan_case_id | plan_branch | plan_npu | plan_op | plan_used_core_num | plan_split_b | plan_m_cnt | plan_n_cnt | plan_grid_k | plan_core_map | plan_b_core | plan_merge_b0 | plan_single_core_m | plan_single_core_n | plan_single_core_k | plan_k_l1 | plan_b_l1 | plan_l1_form | plan_base_m | plan_base_n | plan_base_k | plan_l2_policy_in | plan_l2_policy_out | plan_swizzle_w | plan_workspace_bytes | plan_tail_strategy | plan_tail_m_cnt | plan_tail_n_cnt | plan_tail_k_cnt | plan_tail_m_main | plan_tail_n_main | plan_tail_block_cnt | plan_tail_wave_num | plan_fixpipe_unitflag | plan_out_dtype_bytes | plan_note | gm_read_bytes | l2_read_bytes | t_mte2_gm | t_mte2_l2 | t_mte2 | dma_cmd_count | t_dma_cmd | cube_flops | t_mmad | fixpipe_bytes | t_fixpipe | t_reduce | t_steady | t_drain | t_total | bottleneck | feasible | violations | bound_type | advice |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | to_matmul_demo | 1 | 1 | 2048 | 2048 | 2048 | bf16 | bf16 | bf16 | False | False | False | True | 0 | to_matmul_demo | 转Matmul | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 0 | 0 | 1 | 折叠为 Matmul [2048,2048]x[2048,2048], 复用 Matmul 切分体系 | 0 | 1 | 0 | 0 | 2048 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 转Matmul后由 Matmul 体系决定 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | BatchB=1免费折叠: 左矩阵 [1,2048,2048] 视图折叠为 [2048,2048], 零重排零 split | 16777216 | 0.0 | 1.048576e-05 | 0.0 | 1.048576e-05 | 0.0 | 0.0 | 17179869184.0 | 3.97682157037037e-05 | 8388608 | 1.6131938461538462e-06 | 0.0 | 3.97682157037037e-05 | 0.0 | 3.97682157037037e-05 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | ||||
| 3 | special_k0_demo | 128 | 128 | 256 | 256 | 0 | bf16 | bf16 | bf16 | False | False | False | True | 0 | special_k0_demo | 特殊分支 | Ascend950PR | batch_mat_mul_v3 | 64 | 1 | 1 | 1 | 1 | AIV 核间按行均分 (无 Cube tile 概念) | 0 | 1 | 0 | 0 | 0 | 0 | 1 | UB驻留(AIV) | 0 | 0 | 0 | allocate | direct_gm | 0 | 0 | 不涉及(AIV逐元素) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | False | 2 | K=0纯写值: 无任何计算, C=bias 或 0, 纯 AIV 写值; 按行均分到 AIV 核 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 16777216 | 3.2263876923076923e-06 | 0.0 | 3.2263876923076923e-06 | 0.0 | 3.2263876923076923e-06 | FIXPIPE | True | 写出Bound(L2写口) | 瓶颈在 Fixpipe 写出: 检查输出 dtype (fp16/fp8 可减半写出量), 或评估输出驻留 L2 异步回写策略 | |
| 4 | special_k1_demo | 128 | 128 | 256 | 256 | 1 | bf16 | bf16 | bf16 | False | False | False | True | 0 | special_k1_demo | 特殊分支 | Ascend950PR | batch_mat_mul_v3 | 64 | 1 | 1 | 1 | 1 | AIV 核间按行均分 (无 Cube tile 概念) | 0 | 1 | 0 | 0 | 1 | 0 | 1 | UB驻留(AIV) UB乒乓 | 0 | 0 | 0 | allocate | direct_gm | 0 | 0 | 不涉及(AIV逐元素) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | False | 2 | K=1逐元素乘: 退化为 C=A⊙B 无累加深度, Cube 16x16x16 粒度浪费 15/16; 走 AIV 通路 GM->UB->Mul->GM, UB乒乓 (B>=2*AIV 双batch乒乓流水) | 131072 | 0.0 | 8.192e-08 | 0.0 | 8.192e-08 | 0.0 | 0.0 | 8388608.0 | 3.103030303030303e-07 | 16777216 | 3.2263876923076923e-06 | 0.0 | 3.2263876923076923e-06 | 0.0 | 3.2263876923076923e-06 | FIXPIPE | True | 写出Bound(L2写口) | 瓶颈在 Fixpipe 写出: 检查输出 dtype (fp16/fp8 可减半写出量), 或评估输出驻留 L2 异步回写策略 | |
| 5 | merge_demo_k_trunc | 2048 | 2048 | 16 | 64 | 128 | bf16 | bf16 | bf16 | False | False | False | True | 0 | merge_demo_k_trunc | MergeBatch | Ascend950PR | batch_mat_mul_v3 | 32 | 32 | 1 | 1 | 1 | 切B均分(核间零重复读零依赖) | 64 | 4 | 64 | 256 | 128 | 128 | 12 | 合并驻留 | 64 | 256 | 64 | allocate(GM->L1随路驻留L2) | resident(整case输入+输出<=L2: 输出驻留L2异步回写, GM写=0) | 0 | 0 | 不涉及(核内不切M/N) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | b0=4 (L0C上限5.7/算存比上限21.1/b_core=64); K截断; 合并后单次DMA搬入 A'[64,128]+B'[128,256]; 输出落点: L2驻留 (整case V_in+V_out=40.0MB vs L2=128MB) | 41943040 | 0.0 | 2.62144e-05 | 0.0 | 2.62144e-05 | 16 | 0.0 | 2147483648.0 | 4.971026962962963e-06 | 4194304 | 8.065969230769231e-07 | 0.0 | 2.62144e-05 | 1.2808460398860398e-07 | 2.6342484603988603e-05 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 6 | merge_iter_arbitrate | 128 | 128 | 64 | 64 | 512 | bf16 | bf16 | bf16 | False | False | False | True | 0 | merge_iter_arbitrate | IterBatch | Ascend950PR | batch_mat_mul_v3 | 32 | 32 | 1 | 1 | 1 | 切B轮转分配(核间零重复读零依赖) | 4 | 1 | 64 | 64 | 512 | 512 | 2 | b_双batch乒乓 | 64 | 64 | 256 | allocate(GM->L1随路驻留L2) | resident(整case输入+输出<=L2: 输出驻留L2异步回写, GM写=0) | 0 | 0 | 不涉及(核内不切M/N) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | 双batch乒乓: 2*(MK+KN)*dtype=256KB <= L1; 输出落点: L2驻留 | 16777216 | 0.0 | 1.048576e-05 | 0.0 | 1.048576e-05 | 4 | 0.0 | 536870912.0 | 1.2427567407407407e-06 | 1048576 | 2.0164923076923077e-07 | 0.0 | 1.048576e-05 | 3.6110149287749287e-07 | 1.0846861492877492e-05 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 7 | iter_demo_form_b | 128 | 128 | 64 | 64 | 256 | bf16 | bf16 | bf16 | False | False | False | True | 0 | iter_demo_form_b | IterBatch | Ascend950PR | batch_mat_mul_v3 | 32 | 32 | 1 | 1 | 1 | 切B轮转分配(核间零重复读零依赖) | 4 | 1 | 64 | 64 | 256 | 256 | 2 | b_双batch乒乓 | 64 | 64 | 256 | allocate(GM->L1随路驻留L2) | resident(整case输入+输出<=L2: 输出驻留L2异步回写, GM写=0) | 0 | 0 | 不涉及(核内不切M/N) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | 双batch乒乓: 2*(MK+KN)*dtype=128KB <= L1; 输出落点: L2驻留 | 8388608 | 0.0 | 5.24288e-06 | 0.0 | 5.24288e-06 | 4 | 0.0 | 268435456.0 | 6.213783703703703e-07 | 1048576 | 2.0164923076923077e-07 | 0.0 | 5.24288e-06 | 2.0575690028490026e-07 | 5.4486369002849e-06 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 8 | iter_demo_form_d | 64 | 64 | 64 | 64 | 8192 | bf16 | bf16 | bf16 | False | False | False | True | 0 | iter_demo_form_d | IterBatch | Ascend950PR | batch_mat_mul_v3 | 32 | 32 | 1 | 1 | 1 | 切B轮转分配(核间零重复读零依赖) | 2 | 1 | 64 | 64 | 8192 | 1024 | 1 | d_两侧都切K | 64 | 64 | 256 | allocate(GM->L1随路驻留L2) | direct_gm(整case超L2: 输入优先驻留L2, 输出直写GM不占L2) | 0 | 0 | 不涉及(核内不切M/N) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | 两侧都切K: k_L1=1024, K段成对流水, batch边界天然无缝; dValueA=2048B/dValueB=128B; 输出落点: 直写GM | 134217728 | 0.0 | 8.388608e-05 | 0.0 | 8.388608e-05 | 16 | 0.0 | 4294967296.0 | 9.942053925925925e-06 | 524288 | 3.2768e-07 | 0.0 | 8.421376e-05 | 7.852183703703703e-07 | 8.499897837037037e-05 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 9 | streamk_demo | 4 | 4 | 128 | 128 | 10240 | bf16 | bf16 | bf16 | False | False | False | True | 0 | streamk_demo | StreamK | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 1 | 1 | 32 | B/M/N切出4块, 每块32核切K归约 (归约组内核c负责K段[c*K/32,(c+1)*K/32)) | 1 | 1 | 128 | 128 | 320 | 256 | 1 | K段标准分块流水 | 128 | 128 | 64 | allocate(部分和驻留L2) | resident(部分和4B驻留L2, 防精度丢失不随C的fp16/fp8转换) | 0 | 8388608 | grid_K=32路切K+归约 | 1 | 1 | 32 | 0 | 0 | 0 | 0 | True | 4 | P=1.00, grid_K=32, 部分和驻留L2按4B写出, AIV归约后按C dtype=2B写最终 | 20971520 | 0 | 1.31072e-05 | 0.0 | 1.31072e-05 | 0.0 | 0.0 | 1342177280.0 | 3.1068918518518518e-06 | 0.0 | 0.0 | 3.4067453613053613e-06 | 1.31072e-05 | 3.4067453613053613e-06 | 1.651394536130536e-05 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 10 | asw_demo_full | 2 | 2 | 8192 | 8192 | 1024 | bf16 | bf16 | bf16 | False | False | False | True | 0 | asw_demo_full | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 16 | 16 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 1024 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 16 | True | 2 | tile枚举: P=16, 有界枚举最优 mCnt=16 x nCnt=16 (tile 512x512, 每batch搬入512.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=64.0MB, V_out=256.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 67108864 | 1006632960 | 4.194304e-05 | 0.00019358326153846154 | 0.00023552630153846153 | 0.0 | 0.0 | 274877906944.0 | 0.0006362914512592592 | 268435456 | 0.00016777216 | 0.0 | 0.0006362914512592592 | 0.0 | 0.0006362914512592592 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 11 | asw_demo_reduce_core | 16 | 16 | 256 | 256 | 128 | bf16 | bf16 | bf16 | False | False | False | True | 0 | asw_demo_reduce_core | ASW_Basic_降核 | Ascend950PR | batch_mat_mul_v3 | 16 | 1 | 1 | 1 | 1 | 降核: 只用16核, 每核一个L0C满载输出块, 其余核闲置 | 0 | 1 | 256 | 256 | 128 | 128 | 1 | 标准核内流水 | 256 | 256 | 64 | allocate | resident(整case全驻留S_A) | 0 | 0 | 不涉及(每核一块无尾轮) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | P=16.00<C, 降核是理性选择 (强切则 tile 跌破搬移效率下限反而更慢) | 2097152 | 0 | 2.62144e-06 | 0.0 | 2.62144e-06 | 0.0 | 0.0 | 268435456.0 | 1.2427567407407407e-06 | 2097152 | 8.065969230769231e-07 | 0.0 | 2.62144e-06 | 0.0 | 2.62144e-06 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 12 | b4_m1_n128_k256 | 4 | 4 | 1 | 128 | 256 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b4_m1_n128_k256 | ASW_Basic_降核 | Ascend950PR | batch_mat_mul_v3 | 1 | 1 | 1 | 1 | 1 | 降核: 只用1核, 每核一个L0C满载输出块, 其余核闲置 | 0 | 1 | 1 | 128 | 256 | 256 | 1 | 标准核内流水 | 1 | 128 | 128 | allocate | resident(整case全驻留S_A) | 0 | 0 | 不涉及(每核一块无尾轮) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | P=0.01<C, 降核是理性选择 (强切则 tile 跌破搬移效率下限反而更慢) | 264192 | 0 | 5.28384e-06 | 0.0 | 5.28384e-06 | 0.0 | 0.0 | 262144.0 | 1.9418074074074073e-08 | 1024 | 6.3015384615384615e-09 | 0.0 | 5.28384e-06 | 0.0 | 5.28384e-06 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 13 | b8_m2_n192_k128 | 8 | 8 | 2 | 192 | 128 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b8_m2_n192_k128 | ASW_Basic_降核 | Ascend950PR | batch_mat_mul_v3 | 1 | 1 | 1 | 1 | 1 | 降核: 只用1核, 每核一个L0C满载输出块, 其余核闲置 | 0 | 1 | 2 | 192 | 128 | 128 | 1 | 标准核内流水 | 2 | 192 | 80 | allocate | resident(整case全驻留S_A) | 0 | 0 | 不涉及(每核一块无尾轮) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | P=0.05<C, 降核是理性选择 (强切则 tile 跌破搬移效率下限反而更慢) | 397312 | 0 | 7.94624e-06 | 0.0 | 7.94624e-06 | 0.0 | 0.0 | 786432.0 | 5.825422222222222e-08 | 6144 | 3.7809230769230766e-08 | 0.0 | 7.94624e-06 | 0.0 | 7.94624e-06 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 14 | b16_m4_n256_k192 | 16 | 16 | 4 | 256 | 192 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b16_m4_n256_k192 | ASW_Basic_降核 | Ascend950PR | batch_mat_mul_v3 | 1 | 1 | 1 | 1 | 1 | 降核: 只用1核, 每核一个L0C满载输出块, 其余核闲置 | 0 | 1 | 4 | 256 | 192 | 192 | 1 | 标准核内流水 | 4 | 256 | 64 | allocate | resident(整case全驻留S_A) | 0 | 0 | 不涉及(每核一块无尾轮) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | P=0.25<C, 降核是理性选择 (强切则 tile 跌破搬移效率下限反而更慢) | 1597440 | 0 | 3.19488e-05 | 0.0 | 3.19488e-05 | 0.0 | 0.0 | 6291456.0 | 4.660337777777778e-07 | 32768 | 2.0164923076923077e-07 | 0.0 | 3.19488e-05 | 0.0 | 3.19488e-05 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 15 | b32_m8_n128_k256 | 32 | 32 | 8 | 128 | 256 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b32_m8_n128_k256 | IterBatch | Ascend950PR | batch_mat_mul_v3 | 32 | 32 | 1 | 1 | 1 | 切B轮转分配(核间零重复读零依赖) | 1 | 1 | 8 | 128 | 256 | 256 | 1 | a_单batch全驻留 | 8 | 128 | 128 | allocate(GM->L1随路驻留L2) | resident(整case输入+输出<=L2: 输出驻留L2异步回写, GM写=0) | 0 | 0 | 不涉及(核内不切M/N) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | 单batch全驻留: (MK+KN)*dtype=68KB <= L1; 输出落点: L2驻留 | 2228224 | 0.0 | 1.6384e-06 | 0.0 | 1.6384e-06 | 1 | 0.0 | 16777216.0 | 3.8836148148148146e-08 | 65536 | 1.2603076923076923e-08 | 0.0 | 1.6384e-06 | 5.1439225071225065e-08 | 1.689839225071225e-06 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 16 | b64_m16_n256_k512 | 64 | 64 | 16 | 256 | 512 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b64_m16_n256_k512 | IterBatch | Ascend950PR | batch_mat_mul_v3 | 32 | 32 | 1 | 1 | 1 | 切B轮转分配(核间零重复读零依赖) | 2 | 1 | 16 | 256 | 512 | 240 | 1 | c_一侧驻留+对侧切K | 16 | 256 | 64 | allocate(GM->L1随路驻留L2) | resident(整case输入+输出<=L2: 输出驻留L2异步回写, GM写=0) | 0 | 0 | 不涉及(核内不切M/N) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | 一侧驻留(A)+对侧切K: A驻留16KB, 预算L1/2, k_L1=240, dValueA=480B/dValueB=512B; 输出落点: L2驻留 | 17825792 | 0.0 | 1.114112e-05 | 0.0 | 1.114112e-05 | 6 | 0.0 | 268435456.0 | 6.213783703703703e-07 | 524288 | 1.0082461538461538e-07 | 0.0 | 1.114112e-05 | 1.9604786324786327e-07 | 1.1337167863247863e-05 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 17 | b128_m8_n192_k256 | 128 | 128 | 8 | 192 | 256 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b128_m8_n192_k256 | IterBatch | Ascend950PR | batch_mat_mul_v3 | 32 | 32 | 1 | 1 | 1 | 切B轮转分配(核间零重复读零依赖) | 4 | 1 | 8 | 192 | 256 | 256 | 2 | b_双batch乒乓 | 8 | 192 | 80 | allocate(GM->L1随路驻留L2) | resident(整case输入+输出<=L2: 输出驻留L2异步回写, GM写=0) | 0 | 0 | 不涉及(核内不切M/N) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | 双batch乒乓: 2*(MK+KN)*dtype=200KB <= L1; 输出落点: L2驻留 | 13107200 | 0.0 | 9.17504e-06 | 0.0 | 9.17504e-06 | 4 | 0.0 | 100663296.0 | 2.330168888888889e-07 | 393216 | 7.561846153846153e-08 | 0.0 | 9.17504e-06 | 7.71588376068376e-08 | 9.252198837606838e-06 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 18 | b32_m16_n8192_k7168 | 32 | 32 | 16 | 8192 | 7168 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b32_m16_n8192_k7168 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 1 | 8 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 16 | 1024 | 7168 | 112 | 1 | 双缓冲驻留当前tile输入 | 16 | 1024 | 16 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 8 | True | 2 | tile枚举: 效率降级(放开约束4, dValue 按 128B 硬下限, 搬移效率低于模型假设, 时延可能低估): P=1, mCnt=1 x nCnt=8 (tile 16x1024, 每batch搬入113.8MB, r=0); Base tile 16x1024 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=3591.0MB, V_out=8.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 3765436416 | 51380224 | 0.00235339776 | 9.880812307692307e-06 | 0.0023632785723076925 | 0.0 | 0.0 | 60129542144.0 | 0.00013918875496296296 | 8388608 | 5.24288e-06 | 0.0 | 0.0023685214523076923 | 0.0 | 0.0023685214523076923 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 效率降级标注 (plan.note): 搬移效率下限不满足 —— 方案照常给出 (兜底), 但实际效率低于模型假设, 时延可能低估; 建议调整 dtype/布局 | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 19 | b4_m1_n8192_k8192 | 4 | 4 | 1 | 8192 | 8192 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b4_m1_n8192_k8192 | StreamK | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 1 | 1 | 32 | B/M/N切出4块, 每块32核切K归约 (归约组内核c负责K段[c*K/32,(c+1)*K/32)) | 1 | 1 | 1 | 8192 | 256 | 256 | 1 | K段标准分块流水 | 1 | 128 | 64 | allocate(部分和驻留L2) | resident(部分和4B驻留L2, 防精度丢失不随C的fp16/fp8转换) | 0 | 4194304 | grid_K=32路切K+归约 | 1 | 1 | 32 | 0 | 0 | 0 | 0 | True | 4 | P=0.50, grid_K=32, 部分和驻留L2按4B写出, AIV归约后按C dtype=2B写最终 | 536936448 | 0.0 | 0.00033558528 | 0.0 | 0.00033558528 | 0.0 | 0.0 | 536870912.0 | 1.2427567407407407e-06 | 0.0 | 0.0 | 1.731729603729604e-06 | 0.00033558528 | 1.731729603729604e-06 | 0.0003373170096037296 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 20 | b16_m2_n4096_k7168 | 16 | 16 | 2 | 4096 | 7168 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b16_m2_n4096_k7168 | StreamK | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 1 | 1 | 16 | B/M/N切出16块, 每块16核切K归约 (归约组内核c负责K段[c*K/16,(c+1)*K/16)) | 1 | 1 | 2 | 4096 | 448 | 256 | 1 | K段标准分块流水 | 2 | 128 | 64 | allocate(部分和驻留L2) | resident(部分和4B驻留L2, 防精度丢失不随C的fp16/fp8转换) | 0 | 8388608 | grid_K=16路切K+归约 | 1 | 1 | 16 | 0 | 0 | 0 | 0 | True | 4 | P=2.00, grid_K=16, 部分和驻留L2按4B写出, AIV归约后按C dtype=2B写最终 | 939982848 | 0 | 0.00058748928 | 0.0 | 0.00058748928 | 0.0 | 0.0 | 1879048192.0 | 4.349648592592593e-06 | 0.0 | 0.0 | 1.7726896037296038e-06 | 0.00058748928 | 1.7726896037296038e-06 | 0.0005892619696037297 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 21 | b32_m64_n64_k7168 | 32 | 32 | 64 | 64 | 7168 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b32_m64_n64_k7168 | IterBatch | Ascend950PR | batch_mat_mul_v3 | 32 | 32 | 1 | 1 | 1 | 切B轮转分配(核间零重复读零依赖) | 1 | 1 | 64 | 64 | 7168 | 1024 | 1 | d_两侧都切K | 64 | 64 | 256 | allocate(GM->L1随路驻留L2) | resident(整case输入+输出<=L2: 输出驻留L2异步回写, GM写=0) | 0 | 0 | 不涉及(核内不切M/N) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | 两侧都切K: k_L1=1024, K段成对流水, batch边界天然无缝; dValueA=2048B/dValueB=128B; 输出落点: L2驻留 | 58720256 | 0.0 | 3.670016e-05 | 0.0 | 3.670016e-05 | 7 | 0.0 | 1879048192.0 | 4.349648592592593e-06 | 262144 | 5.041230769230769e-08 | 0.0 | 3.670016e-05 | 6.71790678062678e-07 | 3.737195067806268e-05 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 22 | b64_m1024_n1024_k7168 | 64 | 64 | 1024 | 1024 | 7168 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b64_m1024_n1024_k7168 | IterBatch | Ascend950PR | batch_mat_mul_v3 | 32 | 32 | 1 | 1 | 1 | 切B轮转分配(核间零重复读零依赖) | 2 | 1 | 1024 | 1024 | 7168 | 64 | 1 | d_两侧都切K | 176 | 176 | 64 | allocate(GM->L1随路驻留L2) | direct_gm(整case超L2: 输入优先驻留L2, 输出直写GM不占L2) | 0 | 0 | 不涉及(核内不切M/N) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | 两侧都切K: k_L1=64, K段成对流水, batch边界天然无缝; dValueA=128B/dValueB=2048B; 输出落点: 直写GM | 1879048192 | 0.0 | 0.00117440512 | 0.0 | 0.00117440512 | 224 | 0.0 | 962072674304.0 | 0.0022270200794074074 | 134217728 | 8.388608e-05 | 0.0 | 0.0022270200794074074 | 5.1885093925925924e-05 | 0.0022789051733333333 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 23 | b128_m2048_n2048_k1536 | 128 | 128 | 2048 | 2048 | 1536 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b128_m2048_n2048_k1536 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 4 | 4 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 1536 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 64 | True | 2 | tile枚举: P=1, 有界枚举最优 mCnt=4 x nCnt=4 (tile 512x512, 每batch搬入48.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=1536.0MB, V_out=1024.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 1610612736 | 4831838208 | 0.00100663296 | 0.0009291996553846154 | 0.0019358326153846154 | 0.0 | 0.0 | 1649267441664.0 | 0.0038177487075555555 | 1073741824 | 0.00067108864 | 0.0 | 0.0038177487075555555 | 0.0 | 0.0038177487075555555 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 24 | b64_m1024_n8192_k2048 | 64 | 64 | 1024 | 8192 | 2048 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b64_m1024_n8192_k2048 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 2 | 16 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 2048 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 64 | True | 2 | tile枚举: P=1, 有界枚举最优 mCnt=2 x nCnt=16 (tile 512x512, 每batch搬入128.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=2304.0MB, V_out=1024.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 2415919104 | 6174015488 | 0.00150994944 | 0.0011873106707692308 | 0.0026972601107692305 | 0.0 | 0.0 | 2199023255552.0 | 0.005090331610074074 | 1073741824 | 0.00067108864 | 0.0 | 0.005090331610074074 | 0.0 | 0.005090331610074074 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 25 | b32_m1024_n1024_k512 | 32 | 32 | 1024 | 1024 | 512 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b32_m1024_n1024_k512 | IterBatch | Ascend950PR | batch_mat_mul_v3 | 32 | 32 | 1 | 1 | 1 | 切B轮转分配(核间零重复读零依赖) | 1 | 1 | 1024 | 1024 | 512 | 64 | 1 | d_两侧都切K | 176 | 176 | 64 | allocate(GM->L1随路驻留L2) | resident(整case输入+输出<=L2: 输出驻留L2异步回写, GM写=0) | 0 | 0 | 不涉及(核内不切M/N) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | True | 2 | 两侧都切K: k_L1=64, K段成对流水, batch边界天然无缝; dValueA=128B/dValueB=2048B; 输出落点: L2驻留 | 67108864 | 0.0 | 4.194304e-05 | 0.0 | 4.194304e-05 | 8 | 0.0 | 34359738368.0 | 7.95364314074074e-05 | 67108864 | 1.290555076923077e-05 | 0.0 | 7.95364314074074e-05 | 2.2847604695156693e-05 | 0.0001023840361025641 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 26 | b128_m4096_n4096_k8192 | 128 | 128 | 4096 | 4096 | 8192 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b128_m4096_n4096_k8192 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 8 | 8 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 8192 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 256 | True | 2 | tile枚举: P=1, 有界枚举最优 mCnt=8 x nCnt=8 (tile 512x512, 每batch搬入1024.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=16384.0MB, V_out=4096.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 17179869184 | 120259084288 | 0.01073741824 | 0.023126746978461538 | 0.033864165218461535 | 0.0 | 0.0 | 35184372088832.0 | 0.08144530576118518 | 4294967296 | 0.00268435456 | 0.0 | 0.08144530576118518 | 0.0 | 0.08144530576118518 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 27 | b32_m8192_n4096_k7168 | 32 | 32 | 8192 | 4096 | 7168 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b32_m8192_n4096_k7168 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 16 | 8 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 7168 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 128 | True | 2 | tile枚举: P=1, 有界枚举最优 mCnt=16 x nCnt=8 (tile 512x512, 每batch搬入1792.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=5376.0MB, V_out=2048.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 5637144576 | 54492397568 | 0.00352321536 | 0.010479307224615384 | 0.014002522584615384 | 0.0 | 0.0 | 15393162788864.0 | 0.03563232127051852 | 2147483648 | 0.00134217728 | 0.0 | 0.03563232127051852 | 0.0 | 0.03563232127051852 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 28 | b32_m2048_n2048_k8192 | 32 | 32 | 2048 | 2048 | 8192 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b32_m2048_n2048_k8192 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 4 | 4 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 8192 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 16 | True | 2 | tile枚举: P=1, 有界枚举最优 mCnt=4 x nCnt=4 (tile 512x512, 每batch搬入256.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=2048.0MB, V_out=256.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 2147483648 | 6442450944 | 0.00134217728 | 0.0012389328738461537 | 0.002581110153846154 | 0.0 | 0.0 | 2199023255552.0 | 0.005090331610074074 | 268435456 | 0.00016777216 | 0.0 | 0.005090331610074074 | 0.0 | 0.005090331610074074 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 29 | b64_m4096_n2048_k128 | 64 | 64 | 4096 | 2048 | 128 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b64_m4096_n2048_k128 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 8 | 4 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 128 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 64 | True | 2 | tile枚举: P=1, 有界枚举最优 mCnt=8 x nCnt=4 (tile 512x512, 每batch搬入8.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=96.0MB, V_out=1024.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 100663296 | 436207616 | 6.291456e-05 | 8.388608e-05 | 0.00014680063999999998 | 0.0 | 0.0 | 137438953472.0 | 0.0003181457256296296 | 1073741824 | 0.00067108864 | 0.0 | 0.00081788928 | 0.0 | 0.00081788928 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 30 | b16_m1024_n1024_k8192 | 16 | 16 | 1024 | 1024 | 8192 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b16_m1024_n1024_k8192 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 2 | 2 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 8192 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 2 | True | 2 | tile枚举: P=2, 有界枚举最优 mCnt=2 x nCnt=2 (tile 512x512, 每batch搬入64.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=512.0MB, V_out=32.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 536870912 | 536870912 | 0.00033554432 | 0.00010324440615384615 | 0.0004387887261538461 | 0.0 | 0.0 | 274877906944.0 | 0.0006362914512592592 | 33554432 | 2.097152e-05 | 0.0 | 0.0006362914512592592 | 0.0 | 0.0006362914512592592 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 31 | b4_m32768_n128_k128 | 4 | 4 | 32768 | 128 | 128 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b4_m32768_n128_k128 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 64 | 1 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 128 | 128 | 128 | 1 | 双缓冲驻留当前tile输入 | 512 | 128 | 32 | allocate(输入驻留L2吸收重复读) | resident(整case全驻留S_A: 输出驻留L2异步回写, GM写=0) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 8 | True | 2 | tile枚举: P=8, 有界枚举最优 mCnt=64 x nCnt=1 (tile 512x128, 每batch搬入10.0MB, r=0); Base tile 512x128 (L0C 单缓冲方形用满); L2场景: A_整case全驻留(输入+输出<=L2) (V_in=32.1MB, V_out=32.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 33685504 | 8257536 | 2.105344e-05 | 1.5879876923076922e-06 | 2.2641427692307692e-05 | 0.0 | 0.0 | 4294967296.0 | 9.942053925925925e-06 | 33554432 | 6.452775384615385e-06 | 0.0 | 2.2641427692307692e-05 | 0.0 | 2.2641427692307692e-05 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 32 | b8_m32768_n2048_k512 | 8 | 8 | 32768 | 2048 | 512 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b8_m32768_n2048_k512 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 64 | 4 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 512 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 64 | True | 2 | tile枚举: P=4, 有界枚举最优 mCnt=64 x nCnt=4 (tile 512x512, 每batch搬入256.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=272.0MB, V_out=1024.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 285212672 | 1862270976 | 0.00017825792 | 0.00035812903384615385 | 0.0005363869538461539 | 0.0 | 0.0 | 549755813888.0 | 0.0012725829025185184 | 1073741824 | 0.00067108864 | 0.0 | 0.0012725829025185184 | 0.0 | 0.0012725829025185184 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 33 | b4_m131072_n128_k128 | 4 | 4 | 131072 | 128 | 128 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b4_m131072_n128_k128 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 256 | 1 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 128 | 128 | 128 | 1 | 双缓冲驻留当前tile输入 | 512 | 128 | 32 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 32 | True | 2 | tile枚举: P=8, 有界枚举最优 mCnt=256 x nCnt=1 (tile 512x128, 每batch搬入40.0MB, r=0); Base tile 512x128 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=128.1MB, V_out=128.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 134348800 | 33423360 | 8.3968e-05 | 6.427569230769231e-06 | 9.039556923076924e-05 | 0.0 | 0.0 | 17179869184.0 | 3.97682157037037e-05 | 134217728 | 8.388608e-05 | 0.0 | 0.00017428164923076922 | 0.0 | 0.00017428164923076922 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 34 | b8_m131072_n1024_k256 | 8 | 8 | 131072 | 1024 | 256 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b8_m131072_n1024_k256 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 256 | 2 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 256 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 128 | True | 2 | tile枚举: P=4, 有界枚举最优 mCnt=256 x nCnt=2 (tile 512x512, 每batch搬入256.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=516.0MB, V_out=2048.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 541065216 | 1606418432 | 0.00033816576 | 0.00030892662153846154 | 0.0006470923815384616 | 0.0 | 0.0 | 549755813888.0 | 0.0012725829025185184 | 2147483648 | 0.00134217728 | 0.0 | 0.0019892696615384617 | 0.0 | 0.0019892696615384617 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 35 | b16_m32768_n8192_k7168 | 16 | 16 | 32768 | 8192 | 7168 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b16_m32768_n8192_k7168 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 64 | 16 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 7168 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 512 | True | 2 | tile枚举: P=2, 有界枚举最优 mCnt=64 x nCnt=16 (tile 512x512, 每batch搬入14336.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=8960.0MB, V_out=8192.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 9395240960 | 231122927616 | 0.0058720256 | 0.044446716849230766 | 0.05031874244923076 | 0.0 | 0.0 | 61572651155456.0 | 0.14252928508207408 | 8589934592 | 0.00536870912 | 0.0 | 0.14252928508207408 | 0.0 | 0.14252928508207408 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 36 | b4_m32768_n128_k8192 | 4 | 4 | 32768 | 128 | 8192 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b4_m32768_n128_k8192 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 64 | 1 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 128 | 8192 | 192 | 1 | 双缓冲驻留当前tile输入 | 512 | 128 | 32 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 8 | True | 2 | tile枚举: P=8, 有界枚举最优 mCnt=64 x nCnt=1 (tile 512x128, 每batch搬入640.0MB, r=0); Base tile 512x128 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=2056.0MB, V_out=32.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 2155872256 | 528482304 | 0.00134742016 | 0.0001016312123076923 | 0.0014490513723076923 | 0.0 | 0.0 | 274877906944.0 | 0.0006362914512592592 | 33554432 | 2.097152e-05 | 0.0 | 0.0014700228923076922 | 0.0 | 0.0014700228923076922 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 37 | b32_m131072_n8192_k128 | 32 | 32 | 131072 | 8192 | 128 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b32_m131072_n8192_k128 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 256 | 16 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 128 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 4096 | True | 2 | tile枚举: P=1, 有界枚举最优 mCnt=256 x nCnt=16 (tile 512x512, 每batch搬入1024.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=1088.0MB, V_out=65536.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 1140850688 | 33218887680 | 0.00071303168 | 0.006388247630769231 | 0.007101279310769231 | 0.0 | 0.0 | 8796093022208.0 | 0.020361326440296295 | 68719476736 | 0.04294967296 | 0.0 | 0.05005095227076922 | 0.0 | 0.05005095227076922 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 38 | b64_m32768_n8192_k1536 | 64 | 64 | 32768 | 8192 | 1536 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b64_m32768_n8192_k1536 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 64 | 16 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 1536 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 2048 | True | 2 | tile枚举: P=1, 有界枚举最优 mCnt=64 x nCnt=16 (tile 512x512, 每batch搬入3072.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=7680.0MB, V_out=32768.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 8053063680 | 198105366528 | 0.0050331648 | 0.03809718587076923 | 0.04313035067076923 | 0.0 | 0.0 | 52776558133248.0 | 0.12216795864177778 | 34359738368 | 0.02147483648 | 0.0 | 0.12216795864177778 | 0.0 | 0.12216795864177778 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 39 | b8_m131072_n8192_k8192 | 8 | 8 | 131072 | 8192 | 8192 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b8_m131072_n8192_k8192 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 256 | 16 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 8192 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 1024 | True | 2 | tile枚举: P=4, 有界枚举最优 mCnt=256 x nCnt=16 (tile 512x512, 每batch搬入65536.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: C_双侧超L2: 最小替换2D分组(组间落空GM, 窗口L2) (V_in=17408.0MB, V_out=16384.0MB, L2=128MB); 最小替换分组 m_grp=8x n_grp=8 (GM倍率3.76, 窗口L2/batch=57344.0MB); 尾轮: r=0 无尾轮 | 68719476736 | 481036337152 | 0.04294967296 | 0.09250698791384615 | 0.13545666087384614 | 0.0 | 0.0 | 140737488355328.0 | 0.3257812230447407 | 17179869184 | 0.01073741824 | 0.0 | 0.3257812230447407 | 0.0 | 0.3257812230447407 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 40 | b8_m16_n7168_k1536 | 8 | 8 | 16 | 7168 | 1536 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b8_m16_n7168_k1536 | StreamK | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 1 | 2 | 2 | B/M/N切出16块, 每块2核切K归约 (归约组内核c负责K段[c*K/2,(c+1)*K/2)) | 1 | 1 | 16 | 3584 | 768 | 256 | 1 | K段标准分块流水 | 16 | 128 | 64 | allocate(部分和驻留L2) | resident(部分和4B驻留L2, 防精度丢失不随C的fp16/fp8转换) | 0 | 3670016 | grid_K=2路切K+归约 | 1 | 1 | 2 | 0 | 0 | 0 | 0 | True | 4 | P=14.00, grid_K=2, 部分和驻留L2按4B写出, AIV归约后按C dtype=2B写最终 | 176553984 | 393216 | 0.00011034624 | 7.561846153846153e-08 | 0.00011042185846153846 | 0.0 | 0.0 | 2818572288.0 | 6.524472888888889e-06 | 0.0 | 0.0 | 2.566079254079254e-07 | 0.00011042185846153846 | 2.566079254079254e-07 | 0.00011067846638694638 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 41 | b64_m1024_n7168_k7168 | 64 | 64 | 1024 | 7168 | 7168 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b64_m1024_n7168_k7168 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 2 | 14 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 7168 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 56 | True | 2 | tile枚举: P=1, 有界枚举最优 mCnt=2 x nCnt=14 (tile 512x512, 每batch搬入392.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=7168.0MB, V_out=896.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 7516192768 | 18790481920 | 0.00469762048 | 0.0036135542153846152 | 0.008311174695384616 | 0.0 | 0.0 | 6734508720128.0 | 0.015589140555851852 | 939524096 | 0.00058720256 | 0.0 | 0.015589140555851852 | 0.0 | 0.015589140555851852 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 42 | b32_m8192_n8192_k7168 | 32 | 32 | 8192 | 8192 | 7168 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b32_m8192_n8192_k7168 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 16 | 16 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 7168 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 256 | True | 2 | tile枚举: P=1, 有界枚举最优 mCnt=16 x nCnt=16 (tile 512x512, 每batch搬入3584.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=7168.0MB, V_out=4096.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 7516192768 | 112742891520 | 0.00469762048 | 0.021681325292307693 | 0.026378945772307694 | 0.0 | 0.0 | 30786325577728.0 | 0.07126464254103704 | 4294967296 | 0.00268435456 | 0.0 | 0.07126464254103704 | 0.0 | 0.07126464254103704 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 43 | b8_m4096_n4096_k128 | 8 | 8 | 4096 | 4096 | 128 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b8_m4096_n4096_k128 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 8 | 8 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 128 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 16 | True | 2 | tile枚举: P=4, 有界枚举最优 mCnt=8 x nCnt=8 (tile 512x512, 每batch搬入16.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=16.0MB, V_out=256.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 16777216 | 117440512 | 1.048576e-05 | 2.2584713846153845e-05 | 3.307047384615384e-05 | 0.0 | 0.0 | 34359738368.0 | 7.95364314074074e-05 | 268435456 | 0.00016777216 | 0.0 | 0.00020084263384615383 | 0.0 | 0.00020084263384615383 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 | |
| 44 | b128_m8192_n8192_k7168 | 128 | 128 | 8192 | 8192 | 7168 | bf16 | bf16 | bf16 | False | False | False | True | 0 | b128_m8192_n8192_k7168 | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 16 | 16 | 1 | B->M->N线性映射+ASW滑窗蛇形(W=4) | 0 | 1 | 512 | 512 | 7168 | 128 | 1 | 双缓冲驻留当前tile输入 | 256 | 256 | 64 | allocate(输入驻留L2吸收重复读) | direct_gm(输出直写GM, 输入优先驻留L2) | 4 | 0 | A0 | 1 | 1 | 1 | 0 | 0 | 0 | 1024 | True | 2 | tile枚举: P=1, 有界枚举最优 mCnt=16 x nCnt=16 (tile 512x512, 每batch搬入3584.0MB, r=0); Base tile 256x256 (L0C 单缓冲方形用满); L2场景: B_单batch可驻留(全驻留或单侧驻留+对侧滑窗) (V_in=28672.0MB, V_out=16384.0MB, L2=128MB); 尾轮: r=0 无尾轮 | 30064771072 | 450971566080 | 0.01879048192 | 0.08672530116923077 | 0.10551578308923078 | 0.0 | 0.0 | 123145302310912.0 | 0.28505857016414815 | 17179869184 | 0.01073741824 | 0.0 | 0.28505857016414815 | 0.0 | 0.28505857016414815 | MMAD | True | 计算Bound | 瓶颈在 Cube 计算: 已接近理论算力上限, 检查是否有冗余计算 (MergeBatch 交叉项) 可消除 | |
| 45 | special_k1_b64 | 64 | 64 | 8192 | 512 | 1 | bf16 | bf16 | bf16 | False | False | False | True | 0 | special_k1_b64 | 特殊分支 | Ascend950PR | batch_mat_mul_v3 | 64 | 1 | 1 | 1 | 1 | AIV 核间按行均分 (无 Cube tile 概念) | 0 | 1 | 0 | 0 | 1 | 0 | 1 | UB驻留(AIV) AIV单缓冲 | 0 | 0 | 0 | allocate | direct_gm | 0 | 0 | 不涉及(AIV逐元素) | 1 | 1 | 1 | 0 | 0 | 0 | 0 | False | 2 | K=1逐元素乘: 退化为 C=A⊙B 无累加深度, Cube 16x16x16 粒度浪费 15/16; 走 AIV 通路 GM->UB->Mul->GM, AIV单缓冲 (B<2*AIV 逐batch单缓冲串行) | 1114112 | 0.0 | 6.9632e-07 | 0.0 | 6.9632e-07 | 0.0 | 0.0 | 268435456.0 | 9.92969696969697e-06 | 536870912 | 0.00033554432 | 0.0 | 0.00033624063999999996 | 0.0 | 0.00033624063999999996 | MTE2 | True | 访存Bound(GM读写共享+L2重复读) | 瓶颈在 MTE2 搬移链 (GM 读写共享总线 + L2 重复读): 可增大 tile 提升 dValue/单核搬移量、利用 L2 驻留吸收重复读 (ASW swizzle/分组方向), 或评估输出驻留 L2 以减少 GM 直写与读竞争 |