| refactor: 重构测试框架数据填充模式,统一为参数化命名体系 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !140 merge refactor/fill-unify-desc-params into master refactor: 重构测试框架数据填充模式,统一为参数化命名体系 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 重构测试框架 fill.h 和 csv_loader.h,将离散的 BlasDataFill 枚举替换为参数化的 BlasFillMode 结构体,统一数据填充模式的命名和管理。 **核心变更:** 1. fill.h — 枚举→结构体 + Strategy 模式:BlasFillMode 结构体(method/pattern/val1/val2),ValueGenerator 策略接口 + 5 个具体策略 + createGenerator 工厂,新增 P_BANDED 支持带状矩阵自描述填充,新增 parseFill 接口 2. csv_loader.h — 新增泛型 parseEnum<EnumT> 模板,所有枚举解析(parseFillMode/parseDiagType/parseSideMode/parseOpTrans/parseComputeType/parseStatus)从 if-else 改为 static map + parseEnum 3. 所有 *_param.h — BlasDataFill → BlasFillMode,parseDataFill → parseFill,视觉风格统一 4. 所有 *_test.cpp — 删除 desc 字符串参数和 kBlasSentinel 冗余参数,删除 stbmv/stpsv/strmv 本地 helper 函数,统一使用 fill.h 5. 所有 CSV — fill 列值替换为新命名(如 ZEROS → VALUE_NORM_0,UPPER_TRI → RANDOM_UPPER 等) **命名规则:** METHOD_PATTERN_VAL...,从某位开始可不填(后续取默认值),不允许跳位。 **修复的 Bug:** 之前 description 字段包含 "large"/"neg"/"inf"/"nan"/"extr" 时会意外触发 fill 覆盖(desc 子串匹配),现已彻底消除。 ## 关联的Issue [#134](https://gitcode.com/cann/ops-blas/issues/134) ## 测试 ### 静态验证 - 全量 grep 验证:仓库内所有 *.cpp/*.h/*.csv 中不再存在 BlasDataFill、parseDataFill 引用 - 全量 grep 验证:所有 CSV 中不再存在小写 fill 值(random/zeros/ones 等) - git diff 检查:确认无非相关格式化改动混入,仅涉及 test/ 和 agent/ 目录 ### 编译验证 - 平台:Ascend950 (arch35),CANN 9.1.0 - 编译 21 个 arch35 测试目标,20 个编译通过 - blasLtMatmul_test 编译失败:TEST_DEVICE_ID 未定义(cann/master 预存问题,非本次引入) ### 上板运行验证 #### Ascend950 (arch35) 在 Ascend950 NPU 上运行全部 20 个编译通过的测试,结果如下: | 测试 | 用例数 | 结果 | |------|:---:|:---:| | sasum_test | 35 | ✅ PASS | | sdot_test | 12 | ✅ PASS | | sgbmv_test | 51 | ✅ PASS | | gemv_batched_test | 71 | ✅ PASS | | sgemv_test | 64 | ✅ PASS | | aclblasSgeqrfBatched_test | 42 | ✅ PASS | | sgetrfBatched_test | 33 | ✅ PASS | | sspmv_test | 20 | ✅ PASS | | sswap_test | 42 | ✅ PASS | | ssymv_test | 20 | ✅ PASS | | ssyr2_test | 44 | ✅ PASS | | ssyr_test | 45 | ✅ PASS | | stbmv_test | 37 | ✅ PASS | | stpmv_test | 65 | ✅ PASS | | stpsv_test | 30 | ✅ PASS | | stpttr_test | 56 | ✅ PASS | | strmv_test | 40 | ✅ PASS | | strsv_test | 44 | ✅ PASS | | strttp_test | 56 | ✅ PASS | | ssbmv_test | 20 | ✅ PASS | **结论:20/20 全部通过,本次重构未引入任何功能回归。** #### Ascend910B (arch22) 在 Ascend910B3 NPU 上运行全部 22 个有 arch22 实现的测试,结果如下: | 测试 | 用例数 | 结果 | |------|:---:|:---:| | sasum_test | 1 | ✅ PASS | | caxpy_test | 1 | ✅ PASS | | scopy_test | 2 | ✅ PASS | | cdot_test | 2 | ✅ PASS | | sdot_test | 1 | ✅ PASS | | cgemv_test | 2 | ✅ PASS | | sger_test | 1 | ✅ PASS | | cgerc_test | 1 | ✅ PASS | | snrm2_test | 2 | ✅ PASS | | csrot_test | 1 | ✅ PASS | | cscal_test | 1 | ✅ PASS | | sscal_test | 2 | ✅ PASS | | sspmv_test | 2 | ✅ PASS | | cswap_test | 1 | ✅ PASS | | sswap_test | 1 | ✅ PASS | | ssymv_test | 2 | ✅ PASS | | stbmv_test | 2 | ✅ PASS | | stpmv_test | 2 | ✅ PASS | | ctrmv_test | 2 | ✅ PASS | | strmv_test | 4 | ✅ PASS | | srotm_test | 36 | ✅ PASS | | strsv_test | 6 | ✅ PASS | **结论:22/22 全部通过,本次重构未引入任何功能回归。** ## 文档更新 - agent/skills/blas-ST-develop/SKILL.md:枚举表更新为 BlasFillMode 结构体文档 + 命名规则表 + 常用写法示例 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!140 | 14 天前 |