3.0 KiB
3.0 KiB
| 1 | case_id | branch | npu | op | used_core_num | split_b | m_cnt | n_cnt | grid_k | core_map | b_core | merge_b0 | single_core_m | single_core_n | single_core_k | k_l1 | b_l1 | l1_form | base_m | base_n | base_k | l2_policy_in | l2_policy_out | swizzle_w | workspace_bytes | tail_strategy | fixpipe_unitflag | out_dtype_bytes | note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | merge_demo_1 | 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) | direct_gm(输出仅写一次,直写GM不占L2) | 0 | 0 | 不涉及(核内不切M/N) | True | 2 | 双batch乒乓: 2*(MK+KN)*dtype=256KB <= L1 |
| 3 | iter_demo_1 | 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) | direct_gm(输出仅写一次,直写GM不占L2) | 0 | 0 | 不涉及(核内不切M/N) | True | 2 | 双batch乒乓: 2*(MK+KN)*dtype=128KB <= L1 |
| 4 | iter_demo_2 | IterBatch | Ascend950PR | batch_mat_mul_v3 | 32 | 32 | 1 | 1 | 1 | 切B轮转分配(核间零重复读零依赖) | 16 | 1 | 128 | 128 | 128 | 128 | 2 | b_双batch乒乓 | 128 | 128 | 128 | allocate(GM->L1随路驻留L2) | direct_gm(输出仅写一次,直写GM不占L2) | 0 | 0 | 不涉及(核内不切M/N) | True | 2 | 双batch乒乓: 2*(MK+KN)*dtype=128KB <= L1 |
| 5 | iter_demo_3 | IterBatch | Ascend950PR | batch_mat_mul_v3 | 32 | 32 | 1 | 1 | 1 | 切B轮转分配(核间零重复读零依赖) | 64 | 1 | 1024 | 1024 | 512 | 64 | 1 | d_两侧都切K | 32 | 1024 | 16 | allocate(GM->L1随路驻留L2) | direct_gm(输出仅写一次,直写GM不占L2) | 0 | 0 | 不涉及(核内不切M/N) | True | 2 | 两侧都切K: k_L1=64, K段成对流水, batch边界天然无缝 |
| 6 | iter_demo_4 | 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(输出仅写一次,直写GM不占L2) | 0 | 0 | 不涉及(核内不切M/N) | True | 2 | 两侧都切K: k_L1=1024, K段成对流水, batch边界天然无缝 |
| 7 | fp16_out_demo | 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) | direct_gm(输出仅写一次,直写GM不占L2) | 0 | 0 | 不涉及(核内不切M/N) | True | 2 | 双batch乒乓: 2*(MK+KN)*dtype=256KB <= L1 |
| 8 | to_matmul_demo | 转Matmul | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | True | 2 | BatchA=1或BatchB=1, 折叠转普通Matmul (该分支详实现待后续迭代) | |||||
| 9 | special_k1 | 特殊分支 | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | True | 2 | K=1, Cube 无用, 走 AIV 向量通路 (该分支详实现待后续迭代) | |||||
| 10 | asw_fallback_demo | ASW_Basic | Ascend950PR | batch_mat_mul_v3 | 32 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | True | 2 | IterBatch/MergeBatch 进入条件均不满足 (如负载均衡/搬移效率不达标), 回落 ASW_Basic (该分支详实现待后续迭代); IterBatch未过: 3_L1驻留形态(四选一, 核心要求: 单batch核内零重复读); MergeBatch未过: 1_batch关系与每核份额: BatchA==BatchB 且 b_core=B/C>=2*b0; 2_L0C容量: 2*(b0*M)*(b0*N)*4B <= L0C; 5_访存Bound: 2MN/(M+N) < R16/b0 |