| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
修复6个算子的代码结构问题 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !178 merge refactor/six-ops-cleanup into master 修复6个算子的代码结构问题 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 修复 6 个算子的代码结构问题,包括冗余 include、重复定义的核心数获取函数、不准确的错误信息、wrapper 中缺少返回值校验,以及纯搬运算子的 TQue/TQueBind 冗余开销。 ### 修改内容 **公共函数提取** - 在 host_utils.h 中新增公共 GetAivCoreCount 函数,供所有算子复用 **sswap (#169)** - 删除冗余 include(acl/acl.h、cann_ops_blas_common.h) - 替换本地 GetVectorCoreCount 为公共 GetAivCoreCount - 错误信息改为 "GetAivCoreCount failed" - wrapper 补全 aclrtSynchronizeDevice 和 aclrtMemcpy D2H 返回值校验 - kernel 使用 TBuf 替代 TQueBind,消除队列管理开销 **sgemv (#168)** - 删除冗余 include(acl/acl.h、cann_ops_blas_common.h) - 替换本地 GetVectorCoreCount 为公共 GetAivCoreCount - 错误信息改为 "GetAivCoreCount failed" **stpmv (#170)** - 删除冗余 include(acl/acl.h、cann_ops_blas_common.h) - 替换本地 GetVectorCoreCount 为公共 GetAivCoreCount - 错误信息改为 "GetAivCoreCount failed" **stpttr (#171)** - 删除冗余 include(acl/acl.h、cann_ops_blas_common.h) - wrapper 补全 aclrtSynchronizeDevice 和 aclrtMemcpy D2H 返回值校验 - kernel 使用 TBuf 替代 TQue,消除队列管理开销 **strttp (#172)** - 删除冗余 include(acl/acl.h、cann_ops_blas_common.h) - wrapper 补全 aclrtSynchronizeDevice 和 aclrtMemcpy D2H 返回值校验 - kernel 使用 TBuf 替代 TQue,消除队列管理开销 **sgeqrf_batched (#173)** - 删除冗余 include(acl/acl.h、cann_ops_blas_common.h、tiling/platform/platform_ascendc.h) - 替换本地 GetAivCoreCount 为公共版本 - 错误信息改为 "GetAivCoreCount failed" - wrapper 补全 aclrtSynchronizeDevice 返回值校验 ### 性能优化效果 对纯搬运算子使用 TBuf 替代 TQue/TQueBind,消除队列管理开销(AllocTensor/EnQue/DeQue/FreeTensor): | 算子 | 测试用例 | 优化前 (us) | 优化后 (us) | 提升 | |------|---------|------------|------------|------| | sswap | n=8192 | 12.75 | 9.57 | **24.9%** | | stpttr | n=10240 | 969.06 | 663.04 | **31.6%** | | strttp | n=10240 | 975.03 | 672.45 | **31.0%** | **stpmv 未优化**:使用双缓冲流水线(CopyIn/Compute/CopyOut 三阶段重叠),TQue 提供了真正的流水线并行收益,替换为 TBuf 会丢失重叠。 ## 关联的Issue - [#168](https://gitcode.com/cann/ops-blas/issues/168) - sgemv 算子 host 代码冗余 - [#169](https://gitcode.com/cann/ops-blas/issues/169) - sswap 算子 host 代码冗余及 wrapper 缺少返回值校验 - [#170](https://gitcode.com/cann/ops-blas/issues/170) - stpmv 算子 host 代码冗余 - [#171](https://gitcode.com/cann/ops-blas/issues/171) - stpttr 算子 host 代码冗余及 wrapper 缺少返回值校验 - [#172](https://gitcode.com/cann/ops-blas/issues/172) - strttp 算子 host 代码冗余及 wrapper 缺少返回值校验 - [#173](https://gitcode.com/cann/ops-blas/issues/173) - sgeqrf_batched 算子 host 代码冗余及 wrapper 缺少返回值校验 ## 测试 Ascend 950PR 实板验证,6 个算子全部通过(0 失败,0 跳过): - sswap: 42/42 - sgemv: 64/64 - stpmv: 65/65 - stpttr: 56/56 - strttp: 56/56 - sgeqrf_batched: 42/42 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!178 | 14 天前 | |
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 | 29 天前 | |
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 | 29 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 14 天前 | ||
| 29 天前 | ||
| 29 天前 |