| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
refactor: 迁移 StanfordBench 到 bench_lab/stanford_bench,移除 thirdparty 目录 Co-authored-by: Developer user<suyueming@huawei.com> # message auto-generated for no-merge-commit merge: !124 merge master into master refactor: 迁移 StanfordBench 到 bench_lab/stanford_bench,移除 thirdparty 目录 Created-by: su-yueming Commit-by: Developer user Merged-by: cann-robot Description: ## 变更描述 / Description 1. baseline 数据迁移 - 将 tasks/ 和 bench_lab/ 下所有 cases.yaml 中的 baseline_perf_us/t_hw_us 字段剥离,数据集中存储到各评测集 metadata/910b2.json - 删除 data/stanford_baseline.json,StanfordBench baseline 改由 bench_lab/stanford_bench/metadata/910b2.json 加载 - 新增 scripts/migrate_baseline_to_data.py 迁移工具脚本 2. src 代码变更 - __init__.py: 版本号改为动态读取(_version.py → VERSION 文件) - perf_strategy.py: KernelDetailsStrategy 以 kernel_details.csv 为唯一权威源, 不再 fallback 到 trace_view;TraceViewStrategy 标注待收编 - cann_loader.py: 集成 BaselineStore,baseline 优先从 JSON 查询 - stanford_loader.py: baseline 改由 BaselineStore 加载,移除 _load_baseline - report 模块: 微调 HTML/MD 报告和 setup_info 输出 3. 新增文件 - tasks/metadata/910b2.json + VERSION - bench_lab/*/metadata/910b2.json (cv_agent_bench, kernel_bench, pypto_cann_bench, stanford_bench) - pyproject.toml, VERSION (根目录), _version.py, test_version_consistency.py - docs/design/micro_benchmark_selection.md, module_panorama.md - docs/guide/version_policy.md 4. tests 更新 - test_benchmark_pipeline: 适配 baseline 迁移 - test_cases_yaml_csv_consistency: 新增 metadata JSON 与 cases.yaml 一致性校验 - test_version_consistency: 版本号一致性测试 1. 新增 PLATFORM_ALIAS 和 resolve_hardware() - 在 baseline_resolver.py 中添加产品型号→逻辑名映射表 - 支持精确匹配(Ascend910_9362 → 910b2)和前缀匹配(Ascend310P* → 310p) - 最长前缀优先,避免短 key 误匹配 - BaselineStore/BaselineResolver/__init__ 统一调用 resolve_hardware - has_baseline_for/resolve_baseline_us 内部自动解析硬件名 - 导出 resolve_hardware 和 PLATFORM_ALIAS 至 utils/__init__.py 2. 将 examples/eval_task → examples/tasks - 按 tasks/ 结构重构:add → level2/add, sqrt → level1/sqrt - 新增 metadata/910b2.json(fixture baseline,值均为 0.0 placeholder) - 新增 metadata/VERSION - 新增 cases.csv(与生产 tasks 格式一致) - 重写 README.md(目录结构、路径引用) - 更新 docs/guide/quick_start.md 和根 README.md 的路径引用 - 删除旧 examples/eval_task/ 目录 - 移动 scripts/download_benchmarks.sh → bench_lab/stanford_bench/download.sh, 下载目标从 thirdparty/KernelBench 改为 bench_lab/stanford_bench/KernelBench 将 direct_launch_example 从仅支持 910B 扩展为支持多种 SOC, 与 aclnn_launch_example 的多 SOC 能力对齐。 <!-- 本 PR 做了什么,为什么需要 / What does this PR do and why --> [#31](https://gitcode.com/cann/cann-bench/issues/31) ## 改动类型 / Change Type - [ ] Bug 修复 / Bug Fix - [ ] 新功能 / New Feature - [ ] 性能优化 / Performance - [x] 代码重构 / Refactoring - [ ] 文档更新 / Documentation - [ ] 测试相关 / Test - [ ] 其它 / Other ## 关联 Issue / Related Issues <!-- Closes #000 可自动关闭 / Closes #000 to auto-close --> - Closes # - References # ## 测试信息 / Testing <!-- 简要测试说明或关键结果 / Brief test description or key results --> - [ ] 单元测试通过 / UT passed - [ ] 集成测试通过 / ST passed - [ ] 人工验证通过 / Manual verified ## 检查清单 / Checklist - [ ] 代码符合规范 / Code follows style guide - [ ] 测试添加并通过 / Tests added and passed - [ ] 文档已更新 / Docs updated if needed - [ ] 无硬编码敏感信息 / No secrets hardcoded - [ ] 提交信息符合规范 / Commit message follows convention See merge request: cann/cann-bench!124 | 2 个月前 | |
refactor: 迁移 StanfordBench 到 bench_lab/stanford_bench,移除 thirdparty 目录 Co-authored-by: Developer user<suyueming@huawei.com> # message auto-generated for no-merge-commit merge: !124 merge master into master refactor: 迁移 StanfordBench 到 bench_lab/stanford_bench,移除 thirdparty 目录 Created-by: su-yueming Commit-by: Developer user Merged-by: cann-robot Description: ## 变更描述 / Description 1. baseline 数据迁移 - 将 tasks/ 和 bench_lab/ 下所有 cases.yaml 中的 baseline_perf_us/t_hw_us 字段剥离,数据集中存储到各评测集 metadata/910b2.json - 删除 data/stanford_baseline.json,StanfordBench baseline 改由 bench_lab/stanford_bench/metadata/910b2.json 加载 - 新增 scripts/migrate_baseline_to_data.py 迁移工具脚本 2. src 代码变更 - __init__.py: 版本号改为动态读取(_version.py → VERSION 文件) - perf_strategy.py: KernelDetailsStrategy 以 kernel_details.csv 为唯一权威源, 不再 fallback 到 trace_view;TraceViewStrategy 标注待收编 - cann_loader.py: 集成 BaselineStore,baseline 优先从 JSON 查询 - stanford_loader.py: baseline 改由 BaselineStore 加载,移除 _load_baseline - report 模块: 微调 HTML/MD 报告和 setup_info 输出 3. 新增文件 - tasks/metadata/910b2.json + VERSION - bench_lab/*/metadata/910b2.json (cv_agent_bench, kernel_bench, pypto_cann_bench, stanford_bench) - pyproject.toml, VERSION (根目录), _version.py, test_version_consistency.py - docs/design/micro_benchmark_selection.md, module_panorama.md - docs/guide/version_policy.md 4. tests 更新 - test_benchmark_pipeline: 适配 baseline 迁移 - test_cases_yaml_csv_consistency: 新增 metadata JSON 与 cases.yaml 一致性校验 - test_version_consistency: 版本号一致性测试 1. 新增 PLATFORM_ALIAS 和 resolve_hardware() - 在 baseline_resolver.py 中添加产品型号→逻辑名映射表 - 支持精确匹配(Ascend910_9362 → 910b2)和前缀匹配(Ascend310P* → 310p) - 最长前缀优先,避免短 key 误匹配 - BaselineStore/BaselineResolver/__init__ 统一调用 resolve_hardware - has_baseline_for/resolve_baseline_us 内部自动解析硬件名 - 导出 resolve_hardware 和 PLATFORM_ALIAS 至 utils/__init__.py 2. 将 examples/eval_task → examples/tasks - 按 tasks/ 结构重构:add → level2/add, sqrt → level1/sqrt - 新增 metadata/910b2.json(fixture baseline,值均为 0.0 placeholder) - 新增 metadata/VERSION - 新增 cases.csv(与生产 tasks 格式一致) - 重写 README.md(目录结构、路径引用) - 更新 docs/guide/quick_start.md 和根 README.md 的路径引用 - 删除旧 examples/eval_task/ 目录 - 移动 scripts/download_benchmarks.sh → bench_lab/stanford_bench/download.sh, 下载目标从 thirdparty/KernelBench 改为 bench_lab/stanford_bench/KernelBench 将 direct_launch_example 从仅支持 910B 扩展为支持多种 SOC, 与 aclnn_launch_example 的多 SOC 能力对齐。 <!-- 本 PR 做了什么,为什么需要 / What does this PR do and why --> [#31](https://gitcode.com/cann/cann-bench/issues/31) ## 改动类型 / Change Type - [ ] Bug 修复 / Bug Fix - [ ] 新功能 / New Feature - [ ] 性能优化 / Performance - [x] 代码重构 / Refactoring - [ ] 文档更新 / Documentation - [ ] 测试相关 / Test - [ ] 其它 / Other ## 关联 Issue / Related Issues <!-- Closes #000 可自动关闭 / Closes #000 to auto-close --> - Closes # - References # ## 测试信息 / Testing <!-- 简要测试说明或关键结果 / Brief test description or key results --> - [ ] 单元测试通过 / UT passed - [ ] 集成测试通过 / ST passed - [ ] 人工验证通过 / Manual verified ## 检查清单 / Checklist - [ ] 代码符合规范 / Code follows style guide - [ ] 测试添加并通过 / Tests added and passed - [ ] 文档已更新 / Docs updated if needed - [ ] 无硬编码敏感信息 / No secrets hardcoded - [ ] 提交信息符合规范 / Commit message follows convention See merge request: cann/cann-bench!124 | 2 个月前 | |
docs: add 支持范围 to remaining level1-4 operator descriptors Co-authored-by: gxj1123<gao.xuejian1@huawei.com> # message auto-generated for no-merge-commit merge: !63 merge docs/support-ranges-l1-4 into master docs: add 支持范围 to remaining level1-4 operator descriptors Created-by: gxj1123 Commit-by: gxj1123 Merged-by: cann-robot Description: Sweeps desc.md across **53 operator entries** (L1–4), adding a **支持范围** (supported-range) section plus the related **约束** (input restrictions) paragraphs. ### Coverage - **level1** (8 ops): exp, foreach_addcdiv_scalar, foreach_norm, gelu, masked_scale, mish, sigmoid, swi_glu - **level2** (16 ops): apply_adam_w, apply_rotary_pos_emb, arg_max, cross_entropy_loss, cummin, dynamic_quant, gather, gcd, grid_sampler_3d, group_norm, maximum, resize_bilinear, rms_norm, scatter, softmax, unsorted_segment_sum - **level3**: adaptive_avg_pool_3d, add_rms_norm_dynamic_quant, conv_2d, conv_3d_backprop_filter, depthwise_conv_2d, dequant_swiglu_quant, dilation_2d, engram_gate_fusion, grouped_matmul, mhc_sinkhorn, moe_finalize_routing, moe_gating_top_k_softmax, moe_re_routing, nms, quant_matmul, roi_align, strided_slice, top_k, transpose, unique, weight_quant_batch_matmul - **level4**: gqa, grouped_matmul_swiglu_quant, gru, lstm, mha, mla, mla_prolog, sparse_flash_attention For L4 attention ops the supported range is intentionally tightened to match the kernel templates that are actually compiled in CANN 9.0.0-beta.2 (MLA-only template — attention_mode=2 + rope=64 + qk_dim=512 + Nkv=1 path). Other parameter combinations are listed as "not supported in current release". Pure documentation; no code, no cases, no proto changes. **53 files, +1012 / -45.** See merge request: cann/cann-bench!63 | 3 个月前 | |
fix(moe): 补齐 MoeFinalizeRouting / MoeReRouting 的结构化输入契约 Co-authored-by: Deng Pan<pan.deng@huawei.com> # message auto-generated for no-merge-commit merge: !251 merge fix/moe-structural-input-contract into master fix(moe): 补齐 MoeFinalizeRouting / MoeReRouting 的结构化输入契约 Created-by: Deng_Pan Commit-by: Deng Pan Merged-by: cann-robot Description: 两个 MoE 算子的输入都有单区间 value_range 表达不了的结构约束,通用生成器与现有 get_input 都没兜住。 --- ## 1. MoeFinalizeRouting:expanded_src_to_dst_row 应为单射映射 该输入是 MoeInitRouting 产出的"源行 → 展开缓冲区行"映射,每个源行 (token, k) 占据展开缓冲区中**互不相同**的一行: - drop_less(mode 0/2):[0, NK) 的完整置换 - drop_pad(mode 1/3):到 [0, E*C) 的单射,容量溢出的源行取 -1 表示丢弃 而通用生成器按 randint 独立**有放回**采样,重复量很大(约 37% 的条目落在已被占用的目的行上): | case | 修复前重复 | case | 修复前重复 | |---|---|---|---| | c1 | 3014 / 8192 | c9 | 24158 / 65536 | | c2 | 12083 / 32768 | c15 | 96284 / 262144 | | c10 (drop_pad) | 14 / 99 | c11 (drop_pad) | 93 / 399 | ### 这不是"当前判错",但有两个实质问题 golden 与真实 MoeFinalizeRoutingV2 都做 gather,重复索引下数值仍然可比(现网用例即如此通过)。然而: 1. **访存模式失真** —— 真实场景每行恰好读一次,重复采样把它变成随机重复读,L2 命中率虚高,perf 数据不具代表性。 2. **契约站在候选一边** —— 任何采用 scatter 方向实现的候选(遍历展开行写回目的行,与 gather 等价当且仅当映射单射)都会与 golden 分叉。 ### 修法 新增 get_input:按 case 实际形状推导目的空间 num_dst(drop_less 下 == NK,drop_pad 下 == E*C),为非 -1 位置分配 [0, num_dst) 的互异值;**-1 的位置原样保留**,维持 drop_pad 用例既有的丢弃覆盖与随种子可复现的行为。其余 6 个输入原样透传。 **未做的部分已在注释中写明**:drop_pad 的完整契约还要求目的行落在该源行所属专家的容量块 [e*C, (e+1)*C) 内。golden 不校验这一点,且按专家分配会让丢弃率降到近乎 0(当前用例 E*C 远大于 NK),反而**削弱** -1 路径覆盖,故只做单射重建;专家对齐应由用例设计连同容量一并调整。 --- ## 2. MoeReRouting:get_input 自身会静默违反契约 proto.yaml:39 声明 expert_token_num_per_rank 的元素**必须大于 0**,而 get_input 用 base_value = A // (N*E) 平铺 —— A < N*E 时 base_value 为 0,除最后一格外全是 0,**静默产出违反契约的输入**。候选 kernel 在"某张卡的某个专家分到 0 个 token"上的行为未定义,失败会表现为莫名的精度不符而非配置错误。 当前用例集最小 base_value = 4(c20: A=64, N*E=16),不会触发;这是为后续新增小 A 用例设的护栏:base_value < 1 时直接抛 ValueError 并指明 A 与 N*E 的具体数值。**不改既有的余数分配方式,20 个用例行为完全不变。** --- ## 验证 - MoeFinalizeRouting 20 个用例:重复数**全部归零**、无越界、-1 位置与数量保持不变、golden 输出 shape 不变。 - MoeReRouting 20 个用例:sum == A、min > 0,与修复前逐位一致。 - 新增 tests/ut/test_moe_get_input.py(15 项):drop_less 满置换、drop_pad 非 -1 项互异、-1 位置保留、目的空间取值域、shape/dtype 契约、跨调用可复现、其余输入透传、抽屉原理兜底、golden 可执行;以及 ReRouting 的可行/边界/不可行三态与透传。 - tests/ut 全量 **1069 passed / 6 skipped**。 --- ## 顺带记录一个用例设计层面的覆盖缺口(本次不改) MoeReRouting 20 个用例里 **18 个**的 expert_token_num_per_rank 是完全均匀分布,专家负载不均的场景没有覆盖。这属于用例设计范畴,建议由算子 owner 评估是否补充。 See merge request: cann/cann-bench!251 | 8 天前 | |
fix(tasks): proto.yaml consistency — drop_pad_mode int default, dilation_2d float type signaling Co-authored-by: gxj1123<gao.xuejian1@huawei.com> # message auto-generated for no-merge-commit merge: !70 merge fix/tasks-proto-consistency into master fix(tasks): proto.yaml consistency — drop_pad_mode int default, dilation_2d float type signaling Created-by: gxj1123 Commit-by: gxj1123 Merged-by: cann-robot Description: **4 proto.yaml files, +8 / -8.** Static-only changes to operator descriptors; no golden / cases / runtime code touched. - level3/moe_finalize_routing/proto.yaml: drop_pad_mode default "0" (string) → 0 (int) — type-correct now matches the int attr. - level3/moe_gating_top_k_softmax/proto.yaml: same kind of fix. - level3/moe_re_routing/proto.yaml: same kind of fix. - level3/dilation_2d/proto.yaml: float-type signaling normalization for the dilation attr (was being emitted as bare integer when fractional dilation is supported by the underlying API). See merge request: cann/cann-bench!70 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 8 天前 | ||
| 2 个月前 |