| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(arch35): sasum、snrm2、srot、srotg、sscal、scalex适配混合容差精度标准 Co-authored-by: chensi79<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !294 merge feat/mixed-tolerance-arch35 into master feat(arch35): sasum、snrm2、srot、srotg、sscal、scalex适配混合容差精度标准 Created-by: chensi79 Commit-by: chensi79 Merged-by: cann-robot Description: ## 描述 将 arch35 各算子测试中分散的精度验证逻辑统一替换为 applyMixedTolerance 混合容差标准,消除各测试文件中重复手写的 isinf/isnan/ABS/REL/MERE_MARE 判定分支,统一调用框架提供的混合容差接口。 涉及算子:sasum、snrm2、srot、srotg、sscal、scalex。 ## 关联的Issue https://gitcode.com/cann/ops-blas/issues/320 ## 测试 - 修改覆盖 arch35 下 6 个算子的测试用例,验证逻辑改为统一调用 applyMixedTolerance - 保留原有 CSV 驱动测试用例,仅替换精度校验部分  ## 文档更新 无需更新文档 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:测试框架适配 See merge request: cann/ops-blas!294 | 1 个月前 | |
feat: 全部复数算子接口类型安全改造,彻底回归纯C Co-authored-by: root<1302896824@qq.com> # message auto-generated for no-merge-commit merge: !264 merge feat-all-complex-ops-typed-api into master feat: 全部复数算子接口类型安全改造,彻底回归纯C Created-by: zhanghua145 Commit-by: root Merged-by: cann-robot Description: ## 描述 将所有复数算子接口的 std::complex<float> 替换为 aclblasComplex,uint8_t* 替换为 aclblasComplex*,删除 #include <complex>,使头文件彻底回归纯 C。 ### 改动内容 **1. 类型定义层(cann_ops_blas_common.h)** - 新增 aclblasDoubleComplex(双精度复数 struct) **2. 运算符重载(blas/common/helper/complex_ops.h)** - 新增 C++ 自由函数运算符重载:operator+/-/*//、==、!=、aclblasAbs - 对 aclblasComplex 和 aclblasDoubleComplex 均提供 - C 调用方不可见(#ifdef __cplusplus 隔离) **3. Host API 签名(cann_ops_blas.h)** - 删除 #include <complex> - 所有复数算子标量参数:std::complex<float> → aclblasComplex - 所有复数算子向量/矩阵指针:uint8_t* → aclblasComplex* **4. Host 实现 + 测试同步迁移** 涉及算子(共 10 个): - Caxpy / CgemvBatched / Cgerc / Cscal / Cgemv(标量+向量全改) - Ccopy / Scnrm2 / Csscal / Cswap / ComplexMatDot(仅向量指针) Kernel 代码不动,Host 实现内部通过 reinterpret_cast<uint8_t*> 桥接。 ### 关联 Issue Close #262 ### 已知遗留问题 #290 aclblasCgemvBatched 运行时 segfault 为主分支遗留问题,在原始代码上同样复现,与本次改造无关。 ## 关联的Issue - [#262](https://gitcode.com/cann/ops-blas/issues/262) 复数算子接口类型安全问题 - [#290](https://gitcode.com/cann/ops-blas/issues/290) aclblasCgemvBatched segfault(主分支遗留) ## 测试 - bash build.sh --soc=ascend910b 编译通过 - bash build.sh --soc=ascend910b --ops=caxpy,cscal,cswap,scopy,snrm2,sscal,cgemv,cgerc,cgemv_batched --run 编译并运行 - caxpy/cscal/cswap/ccopy/scnrm2/sscal/cgemv/cgerc 测试通过 - cgemv_batched segfault 为主分支遗留问题(#290) 当前分支: 主分支: ## 文档更新 - blas/axpy/README.md:aclblasCaxpy 函数原型、参数说明、调用示例已同步更新 ## 类型标签 - [x] 新特性 See merge request: cann/ops-blas!264 | 2 个月前 | |
feat(test): saxpy、axpy_ex、sgemv 迁移至MIXED_TOLERANCE Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !288 merge feat/saxpy-axpy-ex-sgemv-mixed-tolerance into master feat(test): saxpy、axpy_ex、sgemv 迁移至MIXED_TOLERANCE Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 对齐生态算子开源精度标准(commit 2a0ca68 引入的 MIXED_TOLERANCE 策略),将 saxpy、axpy_ex、sgemv 三个 arch35 算子的 ST 测试精度验证从旧的 MERE_MARE 模式迁移到新的 MIXED_TOLERANCE 模式。 ### 核心改动 **测试文件**(3 个): - test/saxpy/arch35/saxpy_test.cpp: 删除 mereThreshold=1e-13, mareMultiplier=10.0,改用 applyMixedTolerance(cfg, ACL_FLOAT, goldenY.data(), p.n) - test/axpy_ex/arch35/axpy_ex_test.cpp: 删除 CSV-driven threshold 设置,改用 applyMixedTolerance(cfg, p.yType, yGolden.data(), p.n)(按 dtype 自动填充) - test/gemv/sgemv/arch35/sgemv_test.cpp: 同上 **文档**(3 个): - agent/skills/blas-ST-develop/SKILL.md: 精度模式选择表更新(MIXED_TOLERANCE 为推荐模式) - agent/skills/blas-new-op-workflow/references/task-prompts.md: 新算子 workflow 的精度要求更新 - docs/zh/develop/st_develop_guide.md: 删除 CSV mere_threshold / mare_multiplier 列(MIXED_TOLERANCE 模式下无需在 CSV 中指定阈值) ### 兼容性 - 旧 MERE_MARE 策略及 helper 函数(getMereThreshold/getMareMultiplier)保持向后兼容,本 PR 中仅 3 个测试文件迁移 - VerifyConfig.mode 默认值仍为 PrecisionMode::ABS(PR 描述未实际落地此变更) ## 关联的Issue [#316](https://gitcode.com/cann/ops-blas/issues/316) ## 测试 3 个算子全部 on-device 测试通过(设备:Ascend 950 PR): | 算子 | 测试用例数 | 结果 | |------|-----------|------| | saxpy | 23 | ALL PASSED | | axpy_ex | 79 | ALL PASSED | | sgemv | 64 | ALL PASSED | 验证脚本:build/test/saxpy/saxpy_test, build/test/axpy_ex/axpy_ex_test, build/test/gemv/sgemv/sgemv_test ## 文档更新 - agent/skills/blas-ST-develop/SKILL.md: §1.2 精度模式表重写(删除 MERE_MARE/ABS 列,新增 MIXED_TOLERANCE 配置示例) - agent/skills/blas-new-op-workflow/references/task-prompts.md: 精度模式规则更新 - docs/zh/develop/st_develop_guide.md: §1.3 CSV 列定义删除 mere_threshold/mare_multiplier;§2 参考实现 gbmv 精度模式由 MERE_MARE 更新为 MIXED_TOLERANCE ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!288 | 1 个月前 | |
docs(blaslt): relocate README files to source directories Co-authored-by: Zhang Hua<1302896824@qq.com> # message auto-generated for no-merge-commit merge: !175 merge docs/issue-164-move-readmes into master docs(blaslt): relocate README files to source directories Created-by: zhanghua145 Commit-by: Zhang Hua Merged-by: cann-robot Description: ## 描述 ### README 搬迁 - test/blasLtMatmul/README.md → blasLt/README.md:Matmul 说明文档迁至源码目录,更新路径引用 - test/blasLtMatrixTransform/README.md → blasLt/matrixtransform/README.md:MatrixTransform 说明文档迁至源码目录 - test/symm/ssymm/README.md:已删除,blas/symm/ssymm/README.md 已存在 ### ssymm README 重构 重写 blas/symm/ssymm/README.md,对齐项目文档规范: - 新增「支持的产品」「目录结构介绍」「算子规格」「精度要求」「编译运行」章节 - 参数说明使用 HTML 表格,与其他算子(sgemv/sscal)保持一致 - 移除性能数据、版本历史、调试环境变量等非标准内容 - 合并原测试 README 中的编译运行指引 ## 关联的Issue [#164](https://gitcode.com/cann/ops-blas/issues/164) ## 文档更新 | 文件 | 操作 | |------|------| | blasLt/README.md | 迁移(原 test/blasLtMatmul/README.md) | | blasLt/matrixtransform/README.md | 迁移(原 test/blasLtMatrixTransform/README.md) | | blas/symm/ssymm/README.md | 重写 | | test/symm/ssymm/README.md | 删除 | ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!175 | 2 个月前 | |
docs(blaslt): relocate README files to source directories Co-authored-by: Zhang Hua<1302896824@qq.com> # message auto-generated for no-merge-commit merge: !175 merge docs/issue-164-move-readmes into master docs(blaslt): relocate README files to source directories Created-by: zhanghua145 Commit-by: Zhang Hua Merged-by: cann-robot Description: ## 描述 ### README 搬迁 - test/blasLtMatmul/README.md → blasLt/README.md:Matmul 说明文档迁至源码目录,更新路径引用 - test/blasLtMatrixTransform/README.md → blasLt/matrixtransform/README.md:MatrixTransform 说明文档迁至源码目录 - test/symm/ssymm/README.md:已删除,blas/symm/ssymm/README.md 已存在 ### ssymm README 重构 重写 blas/symm/ssymm/README.md,对齐项目文档规范: - 新增「支持的产品」「目录结构介绍」「算子规格」「精度要求」「编译运行」章节 - 参数说明使用 HTML 表格,与其他算子(sgemv/sscal)保持一致 - 移除性能数据、版本历史、调试环境变量等非标准内容 - 合并原测试 README 中的编译运行指引 ## 关联的Issue [#164](https://gitcode.com/cann/ops-blas/issues/164) ## 文档更新 | 文件 | 操作 | |------|------| | blasLt/README.md | 迁移(原 test/blasLtMatmul/README.md) | | blasLt/matrixtransform/README.md | 迁移(原 test/blasLtMatrixTransform/README.md) | | blas/symm/ssymm/README.md | 重写 | | test/symm/ssymm/README.md | 删除 | ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!175 | 2 个月前 | |
Refact:重构算子目录结构为家族格式 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !95 merge refact_dir_arc into master Refact:重构算子目录结构为家族格式 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 将 blas/ 和 test/ 中扁平结构的算子目录重构为 family/operator/archXX/ 家族格式,统一仓内目录规范。 **目录变更:** - blas/: gbmv/sbmv/syr/syr2 移入家族子目录(如 blas/gbmv/arch35/ → blas/gbmv/sgbmv/arch35/) - test/: gbmv/sbmv/sspmv/ssymv/syr/syr2/stpttr/strttp 移入家族子目录(如 test/sspmv/ → test/spmv/sspmv/) - 测试文件重命名匹配算子名(如 gbmv_test.cpp → sgbmv_test.cpp) - 算子 README 从 test/ 移动到 blas/ 对应算子目录下(34 个文件) **构建系统适配:** - test/CMakeLists.txt: 支持家族嵌套路径解析,自动查找 test/family/op/ 结构 - build.sh: 新增 expand_family_ops() 函数,支持 --ops=gbmv 自动展开为具体算子(如 sgbmv);自动发现功能支持家族嵌套目录;测试二进制路径解析适配嵌套结构 **文档更新:** - docs/QUICKSTART.md: scopy 路径更新为 blas/copy/scopy/ - docs/zh/install/dir_structure.md: 目录结构说明更新为 family/operator/archXX/ 格式 - docs/zh/develop/st_develop_guide.md: 测试文件清单更新为 test/<family>/<op>/ 格式 - agent/agents/developer.md、agent/agents/tester.md: 路径模板更新为 {family}/{operator_name} 格式 - agent/skills/blas-new-op-workflow/references/task-prompts.md: 输出路径更新 ## 关联的Issue [#56](https://gitcode.com/cann/ops-blas/issues/56) ## 测试 双平台验证,全部通过,0 失败。 ### arch22 平台 (ascend910b3) **自动发现验证:** bash bash build.sh --run --soc=ascend910b3 **结果:** 自动发现 34 个算子,23 passed / 11 skipped / 0 failed ✅ **通过的算子 (23个):** | 命令 | 结果 | |------|------| | bash build.sh --ops=sasum --soc=ascend910b3 --run | sasum: passed ✅ | | bash build.sh --ops=caxpy --soc=ascend910b3 --run | caxpy: passed ✅ | | bash build.sh --ops=scopy --soc=ascend910b3 --run | scopy: passed ✅ | | bash build.sh --ops=cdot --soc=ascend910b3 --run | cdot: passed ✅ | | bash build.sh --ops=sdot --soc=ascend910b3 --run | sdot: passed ✅ | | bash build.sh --ops=snrm2 --soc=ascend910b3 --run | snrm2: passed ✅ | | bash build.sh --ops=csrot --soc=ascend910b3 --run | csrot: passed ✅ | | bash build.sh --ops=srotm --soc=ascend910b3 --run | srotm: passed ✅ | | bash build.sh --ops=cscal --soc=ascend910b3 --run | cscal: passed ✅ | | bash build.sh --ops=sscal --soc=ascend910b3 --run | sscal: passed ✅ | | bash build.sh --ops=cswap --soc=ascend910b3 --run | cswap: passed ✅ | | bash build.sh --ops=sswap --soc=ascend910b3 --run | sswap: passed ✅ | | bash build.sh --ops=cgemv --soc=ascend910b3 --run | cgemv: passed ✅ | | bash build.sh --ops=cgemv_batched --soc=ascend910b3 --run | cgemv_batched: passed ✅ | | bash build.sh --ops=sger --soc=ascend910b3 --run | sger: passed ✅ | | bash build.sh --ops=cgerc --soc=ascend910b3 --run | cgerc: passed ✅ | | bash build.sh --ops=sspmv --soc=ascend910b3 --run | sspmv: passed ✅ | | bash build.sh --ops=ssymv --soc=ascend910b3 --run | ssymv: passed ✅ | | bash build.sh --ops=stbmv --soc=ascend910b3 --run | stbmv: passed ✅ | | bash build.sh --ops=stpmv --soc=ascend910b3 --run | stpmv: passed ✅ | | bash build.sh --ops=ctrmv --soc=ascend910b3 --run | ctrmv: passed ✅ | | bash build.sh --ops=strmv --soc=ascend910b3 --run | strmv: passed ✅ | | bash build.sh --ops=strsv --soc=ascend910b3 --run | strsv: passed ✅ | **跳过的算子 (11个):** | 算子 | 跳过原因 | |------|---------| | sgbmv, ssbmv, ssyr, ssyr2, stpsv, stpttr, strttp | 仅 arch35 实现 (ascend950) | | blasLtMatmul | 需要 asc-devkit >= 9.1,当前 9.0 | | colwise_mul, complex_mat_dot, iamax | arch22 无实现 | ### arch35 平台 (ascend950) **单算子验证:** | 命令 | 结果 | |------|------| | bash build.sh --ops=gbmv --soc=ascend950 --run | sgbmv: 51 tests passed ✅ | | bash build.sh --ops=sbmv --soc=ascend950 --run | ssbmv: 29 tests passed ✅ | | bash build.sh --ops=syr --soc=ascend950 --run | ssyr: 23 tests passed ✅ | | bash build.sh --ops=syr2 --soc=ascend950 --run | ssyr2: 34 tests passed ✅ | | bash build.sh --ops=spmv --soc=ascend950 --run | sspmv: 20 tests passed ✅ | | bash build.sh --ops=symv --soc=ascend950 --run | ssymv: 20 tests passed ✅ | | bash build.sh --ops=tpttr --soc=ascend950 --run | stpttr: 56 tests passed ✅ | | bash build.sh --ops=trttp --soc=ascend950 --run | strttp: 56 tests passed ✅ | **家族名展开验证:** | 命令 | 展开结果 | 结果 | |------|---------|------| | bash build.sh --ops=gbmv --soc=ascend950 --run | gbmv → sgbmv | 51 tests passed ✅ | | bash build.sh --ops=sbmv --soc=ascend950 --run | sbmv → ssbmv | 29 tests passed ✅ | | bash build.sh --ops=syr --soc=ascend950 --run | syr → ssyr | 23 tests passed ✅ | | bash build.sh --ops=gbmv,sbmv,syr --soc=ascend950 --run | gbmv,sbmv,syr → sgbmv,ssbmv,ssyr | 3 passed, 0 failed ✅ | **自动发现验证:** bash bash build.sh --soc=ascend950 --run **结果:** 自动发现 33 个算子,11 passed / 22 skipped / 0 failed ✅ **Rebase cann/master 后验证:** bash git rebase cann/master # rebase 到 cb1184d bash build.sh --ops=gbmv,sbmv,syr,syr2,spmv,symv,tpttr,trttp --soc=ascend950 --run **结果:** 8 passed, 0 skipped, 0 failed ✅ ### 验证总结 | 平台 | 通过算子数 | 测试用例数 | 失败数 | |------|-----------|-----------|--------| | arch22 (ascend910b3) | 23 | - | 0 | | arch35 (ascend950) | 8 | 289 | 0 | | **总计** | **31** | **289+** | **0** | ## 文档更新 - docs/QUICKSTART.md: scopy 路径更新 - docs/zh/install/dir_structure.md: 目录结构说明更新 - docs/zh/develop/st_develop_guide.md: 测试文件清单更新 - agent/agents/developer.md、agent/agents/tester.md: 路径模板更新 - agent/skills/blas-new-op-workflow/references/task-prompts.md: 输出路径更新 - 34 个算子 README 从 test/ 移动到 blas/ 对应目录 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:目录结构重构 See merge request: cann/ops-blas!95 | 3 个月前 | |
feat: 全部复数算子接口类型安全改造,彻底回归纯C Co-authored-by: root<1302896824@qq.com> # message auto-generated for no-merge-commit merge: !264 merge feat-all-complex-ops-typed-api into master feat: 全部复数算子接口类型安全改造,彻底回归纯C Created-by: zhanghua145 Commit-by: root Merged-by: cann-robot Description: ## 描述 将所有复数算子接口的 std::complex<float> 替换为 aclblasComplex,uint8_t* 替换为 aclblasComplex*,删除 #include <complex>,使头文件彻底回归纯 C。 ### 改动内容 **1. 类型定义层(cann_ops_blas_common.h)** - 新增 aclblasDoubleComplex(双精度复数 struct) **2. 运算符重载(blas/common/helper/complex_ops.h)** - 新增 C++ 自由函数运算符重载:operator+/-/*//、==、!=、aclblasAbs - 对 aclblasComplex 和 aclblasDoubleComplex 均提供 - C 调用方不可见(#ifdef __cplusplus 隔离) **3. Host API 签名(cann_ops_blas.h)** - 删除 #include <complex> - 所有复数算子标量参数:std::complex<float> → aclblasComplex - 所有复数算子向量/矩阵指针:uint8_t* → aclblasComplex* **4. Host 实现 + 测试同步迁移** 涉及算子(共 10 个): - Caxpy / CgemvBatched / Cgerc / Cscal / Cgemv(标量+向量全改) - Ccopy / Scnrm2 / Csscal / Cswap / ComplexMatDot(仅向量指针) Kernel 代码不动,Host 实现内部通过 reinterpret_cast<uint8_t*> 桥接。 ### 关联 Issue Close #262 ### 已知遗留问题 #290 aclblasCgemvBatched 运行时 segfault 为主分支遗留问题,在原始代码上同样复现,与本次改造无关。 ## 关联的Issue - [#262](https://gitcode.com/cann/ops-blas/issues/262) 复数算子接口类型安全问题 - [#290](https://gitcode.com/cann/ops-blas/issues/290) aclblasCgemvBatched segfault(主分支遗留) ## 测试 - bash build.sh --soc=ascend910b 编译通过 - bash build.sh --soc=ascend910b --ops=caxpy,cscal,cswap,scopy,snrm2,sscal,cgemv,cgerc,cgemv_batched --run 编译并运行 - caxpy/cscal/cswap/ccopy/scnrm2/sscal/cgemv/cgerc 测试通过 - cgemv_batched segfault 为主分支遗留问题(#290) 当前分支: 主分支: ## 文档更新 - blas/axpy/README.md:aclblasCaxpy 函数原型、参数说明、调用示例已同步更新 ## 类型标签 - [x] 新特性 See merge request: cann/ops-blas!264 | 2 个月前 | |
feat: 全部复数算子接口类型安全改造,彻底回归纯C Co-authored-by: root<1302896824@qq.com> # message auto-generated for no-merge-commit merge: !264 merge feat-all-complex-ops-typed-api into master feat: 全部复数算子接口类型安全改造,彻底回归纯C Created-by: zhanghua145 Commit-by: root Merged-by: cann-robot Description: ## 描述 将所有复数算子接口的 std::complex<float> 替换为 aclblasComplex,uint8_t* 替换为 aclblasComplex*,删除 #include <complex>,使头文件彻底回归纯 C。 ### 改动内容 **1. 类型定义层(cann_ops_blas_common.h)** - 新增 aclblasDoubleComplex(双精度复数 struct) **2. 运算符重载(blas/common/helper/complex_ops.h)** - 新增 C++ 自由函数运算符重载:operator+/-/*//、==、!=、aclblasAbs - 对 aclblasComplex 和 aclblasDoubleComplex 均提供 - C 调用方不可见(#ifdef __cplusplus 隔离) **3. Host API 签名(cann_ops_blas.h)** - 删除 #include <complex> - 所有复数算子标量参数:std::complex<float> → aclblasComplex - 所有复数算子向量/矩阵指针:uint8_t* → aclblasComplex* **4. Host 实现 + 测试同步迁移** 涉及算子(共 10 个): - Caxpy / CgemvBatched / Cgerc / Cscal / Cgemv(标量+向量全改) - Ccopy / Scnrm2 / Csscal / Cswap / ComplexMatDot(仅向量指针) Kernel 代码不动,Host 实现内部通过 reinterpret_cast<uint8_t*> 桥接。 ### 关联 Issue Close #262 ### 已知遗留问题 #290 aclblasCgemvBatched 运行时 segfault 为主分支遗留问题,在原始代码上同样复现,与本次改造无关。 ## 关联的Issue - [#262](https://gitcode.com/cann/ops-blas/issues/262) 复数算子接口类型安全问题 - [#290](https://gitcode.com/cann/ops-blas/issues/290) aclblasCgemvBatched segfault(主分支遗留) ## 测试 - bash build.sh --soc=ascend910b 编译通过 - bash build.sh --soc=ascend910b --ops=caxpy,cscal,cswap,scopy,snrm2,sscal,cgemv,cgerc,cgemv_batched --run 编译并运行 - caxpy/cscal/cswap/ccopy/scnrm2/sscal/cgemv/cgerc 测试通过 - cgemv_batched segfault 为主分支遗留问题(#290) 当前分支: 主分支: ## 文档更新 - blas/axpy/README.md:aclblasCaxpy 函数原型、参数说明、调用示例已同步更新 ## 类型标签 - [x] 新特性 See merge request: cann/ops-blas!264 | 2 个月前 | |
Fix:aclblasSdgmm 接口参数顺序与命名对齐 BLAS 标准 Co-authored-by: eternityk<taoyikun@huawei.com> # message auto-generated for no-merge-commit merge: !268 merge aclblasSdgmm into master Fix:aclblasSdgmm 接口参数顺序与命名对齐 BLAS 标准 Created-by: eternityk Commit-by: eternityk Merged-by: cann-robot Description: ## 描述 aclblasSdgmm 接口当前的参数顺序为 (handle, mode, m, n, x, incx, A, lda, B, ldb),与 BLAS 标准参数顺序 (handle, mode, m, n, A, lda, x, incx, C, ldc) 不一致。此外,输出矩阵参数命名为 B/ldb,而 BLAS 标准使用 C/ldc。需要将接口参数顺序和命名对齐 BLAS 标准,确保接口一致性和可维护性。 ## 关联的Issue [#301](https://gitcode.com/cann/ops-blas/issues/301) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!268 | 2 个月前 | |
feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !287 merge feat/mixed-tolerance-adapt into master feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 将 7 个算子的精度验证方式从旧精度模式( MERE_MARE/REL)迁移至 MIXED_TOLERANCE 混合容差方案。 ### 变更原因 PR #283 引入了 applyMixedTolerance API,提供了更合理的混合容差精度验证机制。为保持测试框架的一致性,需要将存量算子的精度验证方式统一迁移至该方案。 ### 变更方法 对以下 7 个算子的测试文件进行迁移: - sdot(PR #89) - sger(PR #137) - sspr(PR #164) - sspr2(PR #202) - stbsv(PR #218) - snrm2_ex(PR #231) - gemv_strided_batched(PR #250) 每个算子的改动为:测试文件中将旧精度模式替换为调用 applyMixedTolerance API。 共计 7 个测试文件变更,16 行新增,34 行删除。README 不涉及变更(精度验证策略属于测试内部实现,不写入面向使用者的算子 README)。 ## 关联的Issue [#315](https://gitcode.com/cann/ops-blas/issues/315) ## 测试 - 执行所有 7 个算子的单元测试,共 303 个测试用例,全部通过 ## 文档更新 不涉及。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试框架迁移(将算子精度验证统一迁移至 MIXED_TOLERANCE 方案) See merge request: cann/ops-blas!287 | 1 个月前 | |
feat(test): rotm,rotmg,dotex适配混合容差精度验证 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !296 merge mix into master feat(test): rotm,rotmg,dotex适配混合容差精度验证 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 rotm、rotmg、dotex 三个算子适配新增的混合容差精度标准(applyMixedTolerance),替代原有手动 MERE_MARE/EXACT/REL 精度校验模式。 变更内容: - test.cpp:将手动精度配置(MERE_MARE/EXACT/REL)替换为 applyMixedTolerance 接口调用 - CSV:移除 mere_threshold、mare_multiplier 列 ## 关联的Issue https://gitcode.com/cann/ops-blas/issues/321 ## 测试 bash build.sh --soc=ascend950 --ops=rotm,rotmg,dotex --run  - rotm: 57 tests PASSED - rotmg: 61 tests PASSED - dotex: 45 tests PASSED ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:适配新精度标准 See merge request: cann/ops-blas!296 | 1 个月前 | |
[bugfix] 将精度校验规则调整为混合精度模式 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !285 merge bugfix into master [bugfix] 将精度校验规则调整为混合精度模式 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将syr,syr2,trsv,gbmv,tpsv,getrs_batched,gemv_batched,matinv_batched,gels_batched,getrf_batched,getri_batched算子精度校验规则调整为混合精度模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/319 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!285 | 1 个月前 | |
[bugfix] 将精度校验规则调整为混合精度模式 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !285 merge bugfix into master [bugfix] 将精度校验规则调整为混合精度模式 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将syr,syr2,trsv,gbmv,tpsv,getrs_batched,gemv_batched,matinv_batched,gels_batched,getrf_batched,getri_batched算子精度校验规则调整为混合精度模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/319 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!285 | 1 个月前 | |
[bugfix] 将精度校验规则调整为混合精度模式 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !285 merge bugfix into master [bugfix] 将精度校验规则调整为混合精度模式 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将syr,syr2,trsv,gbmv,tpsv,getrs_batched,gemv_batched,matinv_batched,gels_batched,getrf_batched,getri_batched算子精度校验规则调整为混合精度模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/319 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!285 | 1 个月前 | |
修复gemm/gemm_batched st 用例失败问题 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !259 merge master into master 修复gemm/gemm_batched st 用例失败问题 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 修复gemm/gemm_batched ut 用例失败问题 ## 关联的Issue [#235](https://gitcode.com/cann/ops-blas/issues/235) [#231](https://gitcode.com/cann/ops-blas/issues/231) [#230](https://gitcode.com/cann/ops-blas/issues/230) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!259 | 2 个月前 | |
Feat: gemm batched with tensor api Co-authored-by: wang-zhiyue2<wangzhiyue2@huawei.com> # message auto-generated for no-merge-commit merge: !269 merge gemm_batched into master Feat: gemm batched with tensor api Created-by: wang-zhiyue2 Commit-by: wang-zhiyue2 Merged-by: cann-robot Description: ## 描述 添加gemm batched算子 ## 关联的Issue ## 测试 sgemm_batched共测试157个用例,1个硬编码用例,156个csv用例,157/157已全部通过。  cgemm_batched共测试166个用例,1个硬编码用例,165个csv用例,166/166已全部通过。  ## 文档更新 添加gemm batched的README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!269 | 1 个月前 | |
修复gemm/gemm_batched st 用例失败问题 Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !259 merge master into master 修复gemm/gemm_batched st 用例失败问题 Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 修复gemm/gemm_batched ut 用例失败问题 ## 关联的Issue [#235](https://gitcode.com/cann/ops-blas/issues/235) [#231](https://gitcode.com/cann/ops-blas/issues/231) [#230](https://gitcode.com/cann/ops-blas/issues/230) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!259 | 2 个月前 | |
Feat: 新增面向arch35的aclblasSgemmGroupedBatched接口 Co-authored-by: Crrryyyy<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !155 merge aclblasGemmGroupedBatched into master Feat: 新增面向arch35的aclblasSgemmGroupedBatched接口 Created-by: Crrryyyy Commit-by: Crrryyyy Merged-by: cann-robot Description: ## 描述 新增面向 arch35 (Ascend950) 平台的 aclblasSgemmGroupedBatched 分组批量矩阵乘接口。 该接口在标准 GEMM 基础上引入 **分组(group)** 语义:每个分组可拥有独立的 (m, n, k, transa, transb, alpha, beta, lda, ldb, ldc) 参数及 groupSize,同一分组内各 batch 共享该组参数,在单次调用中完成所有分组内批次的 GEMM 计算: C[i] = alpha[g] × op(A[i]) × op(B[i]) + beta[g] × C[i], i 属于分组 g **支持的数据类型**: | 数据类型 | 执行路径 | 说明 | |----------|----------|------| | S (FP32) | NPU | AIV SIMD membase 模式,多核并行处理各 batch | **核心设计**: - transa=N 时采用列逐步累加(ColumnWise)模式;transa=T 时采用行点积(DotProduct)模式 - alpha=0 或 k=0 时走 BetaOnly 路径:仅执行 C = beta × C - 总 batch 数(sum(groupSize[g]))均匀分配到各 Vector Core - Host 侧使用本地 kernel 声明,不复用已删除的公共头文件 aclblas_kernel_do.h - 测试框架扩展:csv_loader 支持分号分隔数组解析,fill.h 扩展 Double/Complex 填充 **交付物清单**: | 类别 | 文件 | |------|------| | Host 代码 | blas/gemm_grouped_batched/arch35/gemm_grouped_batched_host.cpp | | Kernel 代码 | blas/gemm_grouped_batched/arch35/gemm_grouped_batched_kernel.cpp | | TilingData | blas/gemm_grouped_batched/arch35/gemm_grouped_batched_tiling_data.h | | 测试代码 | test/gemm_grouped_batched/ | | 算子文档 | blas/gemm_grouped_batched/README.md | | 接口声明 | include/cann_ops_blas.h | | 测试框架 | test/frame/csv_loader.h、test/frame/fill.h | ## 关联的Issue [#187](https://gitcode.com/cann/ops-blas/issues/187) ## 测试 ### ST 精度测试 - **测试框架**:CSV 驱动 GTest,53 条用例(17 条 L0 + 36 条 L1) - **测试覆盖**:单组/多组、NN/NT/TN/TT 转置组合、groupCount/groupSize 变化、alpha/beta 各种取值、边界 shape(零维/非对齐/极端维度)、非法参数校验 - **验证方式**:OpenBLAS golden 参考实现,MERE/MARE 精度校验(FP32: MERE < 2⁻¹³) ### 编译测试 bash bash build.sh --ops=gemm_grouped_batched --soc=ascend950 --run ## 文档更新 - 新增 blas/gemm_grouped_batched/README.md:接口说明、参数规格、支持的数据类型、已知限制、编译/测试命令、调用示例 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!155 | 2 个月前 | |
Feat: 新增面向arch35的aclblasGemmGroupedBatchedEx接口 Co-authored-by: Crrryyyy<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !189 merge aclblasgemmgroupedbatchedEx into master Feat: 新增面向arch35的aclblasGemmGroupedBatchedEx接口 Created-by: Crrryyyy Commit-by: Crrryyyy Merged-by: cann-robot Description: ## 描述 新增面向 arch35 (Ascend950) 平台的 aclblasGemmGroupedBatchedEx 分组批量矩阵乘扩展接口。 该接口是 aclblasGemmBatchedEx([PR #183](https://gitcode.com/cann/ops-blas/pull/183))的分组扩展版本,支持通过设备侧指针数组指定多组矩阵,在单次调用中完成所有分组内批次的 GEMM 计算。相比 BatchedEx,新增 **分组(group)** 语义:每个分组可拥有独立的 (m, n, k, transa, transb, alpha, beta, lda, ldb, ldc, dtype) 参数及 groupSize: index = 0 for group in [0, groupCount): for problem in [0, groupSize[group]): C[index] = alpha[group] * op(A[index]) * op(B[index]) + beta[group] * C[index] index++ **支持的数据类型组合(7 种)**: | 序号 | Atype | Btype | Ctype | computeType | |------|-------|-------|-------|-------------| | 1 | FP16 | FP16 | FP16 | COMPUTE_16F | | 2 | FP16 | FP16 | FP16 | COMPUTE_32F | | 3 | BF16 | BF16 | BF16 | COMPUTE_32F | | 4 | FP8_E4M3 | FP8_E4M3 | FP16 | COMPUTE_32F | | 5 | FP8_E5M2 | FP8_E5M2 | FP16 | COMPUTE_32F | | 6 | FP8_E4M3 | FP8_E5M2 | FP16 | COMPUTE_32F | | 7 | FP8_E5M2 | FP8_E4M3 | FP16 | COMPUTE_32F | **核心设计**: - **双 Kernel 执行模型**:Cube kernel 完成全部矩阵乘法(FP32 workspace 输出);AIV epilogue kernel 完成 alpha/beta 融合、类型转换和 k==0 路径 - **全设备侧计算**:Host 仅负责参数校验、tiling 和元数据上传,不逐组发起 GEMM,也不进行数值计算 - **多核切分**:problemCount × M × N 三维联合切分,grid-stride 循环多核分配 - **复用 BatchedEx 低阶 API**:Nd2Nz → LoadData → Mmad → Fixpipe 流水线 - Kernel 侧直接从 GM 读取设备侧指针数组,无需 Host 侧 D2H 拷贝 **交付物清单**: | 类别 | 文件 | |------|------| | Host 代码 | blas/gemm/gemm_grouped_batched_ex/arch35/gemm_grouped_batched_ex_host.cpp | | Cube Kernel | blas/gemm/gemm_grouped_batched_ex/arch35/gemm_grouped_batched_ex_kernel.cpp | | Epilogue Kernel | blas/gemm/gemm_grouped_batched_ex/arch35/gemm_grouped_batched_ex_epilogue_kernel.cpp | | TilingData | blas/gemm/gemm_grouped_batched_ex/arch35/gemm_grouped_batched_ex_tiling_data.h | | 公共工具 | blas/common/helper/device_utils.h、dtype_cast.h、math_utils.h、sync_utils.h | | 测试代码 | test/gemm_grouped_batched_ex/ | | 算子文档 | blas/gemm/gemm_grouped_batched_ex/README.md | | 接口声明 | include/cann_ops_blas.h | ## 关联的Issue [#188](https://gitcode.com/cann/ops-blas/issues/188) ## 测试 ### ST 精度测试 - **测试框架**:CSV 驱动 GTest + 手工 L1E 参数校验 - **CSV 用例**:62 条(8 条 L0 + 25 条 L1 + 10 条 L2 + 19 条 FP8) - **L1E 参数校验**:29 条手工用例,覆盖空指针、负维度、非法枚举、lda/ldb/ldc 约束、不支持 dtype、computeType 不匹配等 - **测试覆盖**:全部 7 种合法 dtype 组合、单组/多组、NN/NT/TN/TT 转置组合、groupCount/groupSize 变化、alpha/beta 各种取值、边界 shape、FP8 混合输入、非法参数校验 ### 编译测试 bash bash build.sh --ops=gemm_grouped_batched_ex --soc=ascend950 --run ## 文档更新 - 新增 blas/gemm/gemm_grouped_batched_ex/README.md:接口说明、Kernel 执行模型、支持范围、编译/测试命令 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!189 | 2 个月前 | |
feat(test): saxpy、axpy_ex、sgemv 迁移至MIXED_TOLERANCE Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !288 merge feat/saxpy-axpy-ex-sgemv-mixed-tolerance into master feat(test): saxpy、axpy_ex、sgemv 迁移至MIXED_TOLERANCE Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 对齐生态算子开源精度标准(commit 2a0ca68 引入的 MIXED_TOLERANCE 策略),将 saxpy、axpy_ex、sgemv 三个 arch35 算子的 ST 测试精度验证从旧的 MERE_MARE 模式迁移到新的 MIXED_TOLERANCE 模式。 ### 核心改动 **测试文件**(3 个): - test/saxpy/arch35/saxpy_test.cpp: 删除 mereThreshold=1e-13, mareMultiplier=10.0,改用 applyMixedTolerance(cfg, ACL_FLOAT, goldenY.data(), p.n) - test/axpy_ex/arch35/axpy_ex_test.cpp: 删除 CSV-driven threshold 设置,改用 applyMixedTolerance(cfg, p.yType, yGolden.data(), p.n)(按 dtype 自动填充) - test/gemv/sgemv/arch35/sgemv_test.cpp: 同上 **文档**(3 个): - agent/skills/blas-ST-develop/SKILL.md: 精度模式选择表更新(MIXED_TOLERANCE 为推荐模式) - agent/skills/blas-new-op-workflow/references/task-prompts.md: 新算子 workflow 的精度要求更新 - docs/zh/develop/st_develop_guide.md: 删除 CSV mere_threshold / mare_multiplier 列(MIXED_TOLERANCE 模式下无需在 CSV 中指定阈值) ### 兼容性 - 旧 MERE_MARE 策略及 helper 函数(getMereThreshold/getMareMultiplier)保持向后兼容,本 PR 中仅 3 个测试文件迁移 - VerifyConfig.mode 默认值仍为 PrecisionMode::ABS(PR 描述未实际落地此变更) ## 关联的Issue [#316](https://gitcode.com/cann/ops-blas/issues/316) ## 测试 3 个算子全部 on-device 测试通过(设备:Ascend 950 PR): | 算子 | 测试用例数 | 结果 | |------|-----------|------| | saxpy | 23 | ALL PASSED | | axpy_ex | 79 | ALL PASSED | | sgemv | 64 | ALL PASSED | 验证脚本:build/test/saxpy/saxpy_test, build/test/axpy_ex/axpy_ex_test, build/test/gemv/sgemv/sgemv_test ## 文档更新 - agent/skills/blas-ST-develop/SKILL.md: §1.2 精度模式表重写(删除 MERE_MARE/ABS 列,新增 MIXED_TOLERANCE 配置示例) - agent/skills/blas-new-op-workflow/references/task-prompts.md: 精度模式规则更新 - docs/zh/develop/st_develop_guide.md: §1.3 CSV 列定义删除 mere_threshold/mare_multiplier;§2 参考实现 gbmv 精度模式由 MERE_MARE 更新为 MIXED_TOLERANCE ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!288 | 1 个月前 | |
[bugfix] 将精度校验规则调整为混合精度模式 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !285 merge bugfix into master [bugfix] 将精度校验规则调整为混合精度模式 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将syr,syr2,trsv,gbmv,tpsv,getrs_batched,gemv_batched,matinv_batched,gels_batched,getrf_batched,getri_batched算子精度校验规则调整为混合精度模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/319 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!285 | 1 个月前 | |
feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !287 merge feat/mixed-tolerance-adapt into master feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 将 7 个算子的精度验证方式从旧精度模式( MERE_MARE/REL)迁移至 MIXED_TOLERANCE 混合容差方案。 ### 变更原因 PR #283 引入了 applyMixedTolerance API,提供了更合理的混合容差精度验证机制。为保持测试框架的一致性,需要将存量算子的精度验证方式统一迁移至该方案。 ### 变更方法 对以下 7 个算子的测试文件进行迁移: - sdot(PR #89) - sger(PR #137) - sspr(PR #164) - sspr2(PR #202) - stbsv(PR #218) - snrm2_ex(PR #231) - gemv_strided_batched(PR #250) 每个算子的改动为:测试文件中将旧精度模式替换为调用 applyMixedTolerance API。 共计 7 个测试文件变更,16 行新增,34 行删除。README 不涉及变更(精度验证策略属于测试内部实现,不写入面向使用者的算子 README)。 ## 关联的Issue [#315](https://gitcode.com/cann/ops-blas/issues/315) ## 测试 - 执行所有 7 个算子的单元测试,共 303 个测试用例,全部通过 ## 文档更新 不涉及。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试框架迁移(将算子精度验证统一迁移至 MIXED_TOLERANCE 方案) See merge request: cann/ops-blas!287 | 1 个月前 | |
fix(geqrf_batched): 完善aclblasSgeqrfBatched的info参数实现 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !211 merge fix/geqrf-batched-info-param-193 into master fix(geqrf_batched): 完善aclblasSgeqrfBatched的info参数实现 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 修复 aclblasSgeqrfBatched 接口 info 参数实现与标准 LAPACK xINFO 语义不一致的问题,并新增公共 aclblasLapackInfo_t 枚举供其他 BLAS 算子复用。 主要改动: 1. **Host 侧参数校验**(sgeqrf_batched_host.cpp):ValidateGeqrfBatchedParams 新增 int* info 参数,在参数非法时设置 *info = ACLBLAS_LAPACK_INFO_ARG_N(LAPACK 规范) 2. **CPU 参考实现**(sgeqrf_batched_golden.h):修复 info[b] = 0 数组写法的 bug → *info = ACLBLAS_LAPACK_INFO_OK 3. **测试用例增强**(sgeqrf_batched_test.cpp):新增 TEST_F(NullInfo) 验证 info==nullptr 场景;在 TEST_P(CsvDriven) 中增加全场景 info 值断言(正常、参数非法、边界早返回)及 host/golden 交叉验证 4. **新增公共枚举**(cann_ops_blas_common.h):新增 aclblasLapackInfo_t(ACLBLAS_LAPACK_INFO_OK = 0,ACLBLAS_LAPACK_INFO_ARG_1 = -1 ... ACLBLAS_LAPACK_INFO_ARG_8 = -8),供后续 LAPACK-style 算子(如 sposv、spotrf 等)复用 ## 关联的Issue [Issue #193](https://gitcode.com/cann/ops-blas/issues/193) ## 测试 - **arch35 (Ascend950PR, DAV_3510)**:43/43 测试通过 - 8 个参数校验场景:验证 info 负值(m<0→-1,n<0→-2,lda<max(1,m)→-4,Aarray==nullptr→-3,TauArray==nullptr→-5,batchSize<0→-7) - 3 个边界早返回场景(m=0、n=0、batchSize=0):验证 info==0 - 32 个正常执行场景:验证 info==0 + 精度 + host/golden 交叉验证 - 1 个 nullptr 场景:info==nullptr → ACLBLAS_STATUS_INVALID_VALUE - **arch22 (Ascend910B)**:编译通过 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!211 | 2 个月前 | |
feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !287 merge feat/mixed-tolerance-adapt into master feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 将 7 个算子的精度验证方式从旧精度模式( MERE_MARE/REL)迁移至 MIXED_TOLERANCE 混合容差方案。 ### 变更原因 PR #283 引入了 applyMixedTolerance API,提供了更合理的混合容差精度验证机制。为保持测试框架的一致性,需要将存量算子的精度验证方式统一迁移至该方案。 ### 变更方法 对以下 7 个算子的测试文件进行迁移: - sdot(PR #89) - sger(PR #137) - sspr(PR #164) - sspr2(PR #202) - stbsv(PR #218) - snrm2_ex(PR #231) - gemv_strided_batched(PR #250) 每个算子的改动为:测试文件中将旧精度模式替换为调用 applyMixedTolerance API。 共计 7 个测试文件变更,16 行新增,34 行删除。README 不涉及变更(精度验证策略属于测试内部实现,不写入面向使用者的算子 README)。 ## 关联的Issue [#315](https://gitcode.com/cann/ops-blas/issues/315) ## 测试 - 执行所有 7 个算子的单元测试,共 303 个测试用例,全部通过 ## 文档更新 不涉及。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试框架迁移(将算子精度验证统一迁移至 MIXED_TOLERANCE 方案) See merge request: cann/ops-blas!287 | 1 个月前 | |
feat: 全部复数算子接口类型安全改造,彻底回归纯C Co-authored-by: root<1302896824@qq.com> # message auto-generated for no-merge-commit merge: !264 merge feat-all-complex-ops-typed-api into master feat: 全部复数算子接口类型安全改造,彻底回归纯C Created-by: zhanghua145 Commit-by: root Merged-by: cann-robot Description: ## 描述 将所有复数算子接口的 std::complex<float> 替换为 aclblasComplex,uint8_t* 替换为 aclblasComplex*,删除 #include <complex>,使头文件彻底回归纯 C。 ### 改动内容 **1. 类型定义层(cann_ops_blas_common.h)** - 新增 aclblasDoubleComplex(双精度复数 struct) **2. 运算符重载(blas/common/helper/complex_ops.h)** - 新增 C++ 自由函数运算符重载:operator+/-/*//、==、!=、aclblasAbs - 对 aclblasComplex 和 aclblasDoubleComplex 均提供 - C 调用方不可见(#ifdef __cplusplus 隔离) **3. Host API 签名(cann_ops_blas.h)** - 删除 #include <complex> - 所有复数算子标量参数:std::complex<float> → aclblasComplex - 所有复数算子向量/矩阵指针:uint8_t* → aclblasComplex* **4. Host 实现 + 测试同步迁移** 涉及算子(共 10 个): - Caxpy / CgemvBatched / Cgerc / Cscal / Cgemv(标量+向量全改) - Ccopy / Scnrm2 / Csscal / Cswap / ComplexMatDot(仅向量指针) Kernel 代码不动,Host 实现内部通过 reinterpret_cast<uint8_t*> 桥接。 ### 关联 Issue Close #262 ### 已知遗留问题 #290 aclblasCgemvBatched 运行时 segfault 为主分支遗留问题,在原始代码上同样复现,与本次改造无关。 ## 关联的Issue - [#262](https://gitcode.com/cann/ops-blas/issues/262) 复数算子接口类型安全问题 - [#290](https://gitcode.com/cann/ops-blas/issues/290) aclblasCgemvBatched segfault(主分支遗留) ## 测试 - bash build.sh --soc=ascend910b 编译通过 - bash build.sh --soc=ascend910b --ops=caxpy,cscal,cswap,scopy,snrm2,sscal,cgemv,cgerc,cgemv_batched --run 编译并运行 - caxpy/cscal/cswap/ccopy/scnrm2/sscal/cgemv/cgerc 测试通过 - cgemv_batched segfault 为主分支遗留问题(#290) 当前分支: 主分支: ## 文档更新 - blas/axpy/README.md:aclblasCaxpy 函数原型、参数说明、调用示例已同步更新 ## 类型标签 - [x] 新特性 See merge request: cann/ops-blas!264 | 2 个月前 | |
[bugfix] 将精度校验规则调整为混合精度模式 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !285 merge bugfix into master [bugfix] 将精度校验规则调整为混合精度模式 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将syr,syr2,trsv,gbmv,tpsv,getrs_batched,gemv_batched,matinv_batched,gels_batched,getrf_batched,getri_batched算子精度校验规则调整为混合精度模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/319 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!285 | 1 个月前 | |
[bugfix] 将精度校验规则调整为混合精度模式 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !285 merge bugfix into master [bugfix] 将精度校验规则调整为混合精度模式 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将syr,syr2,trsv,gbmv,tpsv,getrs_batched,gemv_batched,matinv_batched,gels_batched,getrf_batched,getri_batched算子精度校验规则调整为混合精度模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/319 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!285 | 1 个月前 | |
[bugfix] 将精度校验规则调整为混合精度模式 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !285 merge bugfix into master [bugfix] 将精度校验规则调整为混合精度模式 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将syr,syr2,trsv,gbmv,tpsv,getrs_batched,gemv_batched,matinv_batched,gels_batched,getrf_batched,getri_batched算子精度校验规则调整为混合精度模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/319 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!285 | 1 个月前 | |
Feat: 新增面向arch35的aclblasIsamax/aclblasIsamin接口 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !195 merge aclblasIsamax into master Feat: 新增面向arch35的aclblasIsamax/aclblasIsamin接口 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 新增面向 arch35(Ascend 950)平台的 iamax 和 iamin 算子实现。 iamax(最大绝对值元素索引)和 iamin(最小绝对值元素索引)是 BLAS Level-1 向量归约算子,返回向量中绝对值最大/最小元素的 1-based 索引。 实现采用双路执行策略: - incx=1 时走 SIMD AIV 路径(使用 ReduceMax/ReduceMin) - incx>1 时走 SIMT 路径(显式树形归约,支持任意步长) 多核协同采用两阶段归约: - Phase 1:每个核计算局部最大/最小值(值,索引)对,写入 workspace - Phase 2:reduce_kernel 读取 workspace,执行最终跨核归约 - Small path 优化:单核直接写(numBlocks==1 且 n≤16320) NaN 处理遵循 BLAS 标准: - NaN 与自身比较返回 false - 全 NaN 输入:返回索引 1(第一个元素) - 混合 NaN 输入:跳过 NaN,选择第一个有效元素 - Inf 处理:±Inf 视为最大绝对值 ## 关联的Issue [#195](https://gitcode.com/cann/ops-blas/issues/195) ## 测试 共 120 个测试用例,100% 通过率: - iamax: 60/60 ✓ - iamin: 60/60 ✓ 测试覆盖范围: - L0(核心):22 个用例,基础功能(n=1,5,100,256)、边界条件(n=0,1)、步长(incx=1,2,3) - L1(扩展):27 个用例,大形状(n=10K-1M)、SIMT 路径(incx=4-128)、负步长 - L2(边界):11 个用例,极端情况(n=-1, incx=-2, n=10M, maxDataCount 边界)、特殊值(NaN, Inf, 全零) ## 文档更新 更新了 blas/iamax/README.md,采用统一模板格式 ## 类型标签 - [x] 新特性 - [x] 性能优化 See merge request: cann/ops-blas!195 | 2 个月前 | |
Feat: 新增面向arch35的aclblasIsamax/aclblasIsamin接口 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !195 merge aclblasIsamax into master Feat: 新增面向arch35的aclblasIsamax/aclblasIsamin接口 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 新增面向 arch35(Ascend 950)平台的 iamax 和 iamin 算子实现。 iamax(最大绝对值元素索引)和 iamin(最小绝对值元素索引)是 BLAS Level-1 向量归约算子,返回向量中绝对值最大/最小元素的 1-based 索引。 实现采用双路执行策略: - incx=1 时走 SIMD AIV 路径(使用 ReduceMax/ReduceMin) - incx>1 时走 SIMT 路径(显式树形归约,支持任意步长) 多核协同采用两阶段归约: - Phase 1:每个核计算局部最大/最小值(值,索引)对,写入 workspace - Phase 2:reduce_kernel 读取 workspace,执行最终跨核归约 - Small path 优化:单核直接写(numBlocks==1 且 n≤16320) NaN 处理遵循 BLAS 标准: - NaN 与自身比较返回 false - 全 NaN 输入:返回索引 1(第一个元素) - 混合 NaN 输入:跳过 NaN,选择第一个有效元素 - Inf 处理:±Inf 视为最大绝对值 ## 关联的Issue [#195](https://gitcode.com/cann/ops-blas/issues/195) ## 测试 共 120 个测试用例,100% 通过率: - iamax: 60/60 ✓ - iamin: 60/60 ✓ 测试覆盖范围: - L0(核心):22 个用例,基础功能(n=1,5,100,256)、边界条件(n=0,1)、步长(incx=1,2,3) - L1(扩展):27 个用例,大形状(n=10K-1M)、SIMT 路径(incx=4-128)、负步长 - L2(边界):11 个用例,极端情况(n=-1, incx=-2, n=10M, maxDataCount 边界)、特殊值(NaN, Inf, 全零) ## 文档更新 更新了 blas/iamax/README.md,采用统一模板格式 ## 类型标签 - [x] 新特性 - [x] 性能优化 See merge request: cann/ops-blas!195 | 2 个月前 | |
Feat: 新增面向arch35的aclblasIsamax/aclblasIsamin接口 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !195 merge aclblasIsamax into master Feat: 新增面向arch35的aclblasIsamax/aclblasIsamin接口 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 新增面向 arch35(Ascend 950)平台的 iamax 和 iamin 算子实现。 iamax(最大绝对值元素索引)和 iamin(最小绝对值元素索引)是 BLAS Level-1 向量归约算子,返回向量中绝对值最大/最小元素的 1-based 索引。 实现采用双路执行策略: - incx=1 时走 SIMD AIV 路径(使用 ReduceMax/ReduceMin) - incx>1 时走 SIMT 路径(显式树形归约,支持任意步长) 多核协同采用两阶段归约: - Phase 1:每个核计算局部最大/最小值(值,索引)对,写入 workspace - Phase 2:reduce_kernel 读取 workspace,执行最终跨核归约 - Small path 优化:单核直接写(numBlocks==1 且 n≤16320) NaN 处理遵循 BLAS 标准: - NaN 与自身比较返回 false - 全 NaN 输入:返回索引 1(第一个元素) - 混合 NaN 输入:跳过 NaN,选择第一个有效元素 - Inf 处理:±Inf 视为最大绝对值 ## 关联的Issue [#195](https://gitcode.com/cann/ops-blas/issues/195) ## 测试 共 120 个测试用例,100% 通过率: - iamax: 60/60 ✓ - iamin: 60/60 ✓ 测试覆盖范围: - L0(核心):22 个用例,基础功能(n=1,5,100,256)、边界条件(n=0,1)、步长(incx=1,2,3) - L1(扩展):27 个用例,大形状(n=10K-1M)、SIMT 路径(incx=4-128)、负步长 - L2(边界):11 个用例,极端情况(n=-1, incx=-2, n=10M, maxDataCount 边界)、特殊值(NaN, Inf, 全零) ## 文档更新 更新了 blas/iamax/README.md,采用统一模板格式 ## 类型标签 - [x] 新特性 - [x] 性能优化 See merge request: cann/ops-blas!195 | 2 个月前 | |
[bugfix] 将精度校验规则调整为混合精度模式 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !285 merge bugfix into master [bugfix] 将精度校验规则调整为混合精度模式 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将syr,syr2,trsv,gbmv,tpsv,getrs_batched,gemv_batched,matinv_batched,gels_batched,getrf_batched,getri_batched算子精度校验规则调整为混合精度模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/319 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!285 | 1 个月前 | |
feat(arch35): sasum、snrm2、srot、srotg、sscal、scalex适配混合容差精度标准 Co-authored-by: chensi79<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !294 merge feat/mixed-tolerance-arch35 into master feat(arch35): sasum、snrm2、srot、srotg、sscal、scalex适配混合容差精度标准 Created-by: chensi79 Commit-by: chensi79 Merged-by: cann-robot Description: ## 描述 将 arch35 各算子测试中分散的精度验证逻辑统一替换为 applyMixedTolerance 混合容差标准,消除各测试文件中重复手写的 isinf/isnan/ABS/REL/MERE_MARE 判定分支,统一调用框架提供的混合容差接口。 涉及算子:sasum、snrm2、srot、srotg、sscal、scalex。 ## 关联的Issue https://gitcode.com/cann/ops-blas/issues/320 ## 测试 - 修改覆盖 arch35 下 6 个算子的测试用例,验证逻辑改为统一调用 applyMixedTolerance - 保留原有 CSV 驱动测试用例,仅替换精度校验部分  ## 文档更新 无需更新文档 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:测试框架适配 See merge request: cann/ops-blas!294 | 1 个月前 | |
feat(arch35): sasum、snrm2、srot、srotg、sscal、scalex适配混合容差精度标准 Co-authored-by: chensi79<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !294 merge feat/mixed-tolerance-arch35 into master feat(arch35): sasum、snrm2、srot、srotg、sscal、scalex适配混合容差精度标准 Created-by: chensi79 Commit-by: chensi79 Merged-by: cann-robot Description: ## 描述 将 arch35 各算子测试中分散的精度验证逻辑统一替换为 applyMixedTolerance 混合容差标准,消除各测试文件中重复手写的 isinf/isnan/ABS/REL/MERE_MARE 判定分支,统一调用框架提供的混合容差接口。 涉及算子:sasum、snrm2、srot、srotg、sscal、scalex。 ## 关联的Issue https://gitcode.com/cann/ops-blas/issues/320 ## 测试 - 修改覆盖 arch35 下 6 个算子的测试用例,验证逻辑改为统一调用 applyMixedTolerance - 保留原有 CSV 驱动测试用例,仅替换精度校验部分  ## 文档更新 无需更新文档 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:测试框架适配 See merge request: cann/ops-blas!294 | 1 个月前 | |
feat(frame): 加入混合容差精度测试 Co-authored-by: Twoliges<202383290096@nuist.edu.cn> # message auto-generated for no-merge-commit merge: !283 merge feat/new-test-standard into master feat(frame): 加入混合容差精度测试 Created-by: Twoliges Commit-by: Twoliges Merged-by: cann-robot Description: ## 描述 对齐生态算子开源精度标准 ( opbase/docs/zh/ops_precision_standard/experimental_standard.md),在精度验证框架中新增 MIXED_TOLERANCE 策略,落地新标准的逐元素混合容差 + 通过率 + 绝对误差硬上限方案。 ### 核心公式(experimental_standard.md § 2.1) - **每元素通过条件**:|actual - golden| ≤ atol + rtol × |golden| - **每元素硬上限**:|actual - golden| ≤ max(fixedLimit, 32 × ULP_at_|golden|) - **整体通过条件**:matched_ratio ≥ 0.99,且所有元素都独立通过硬上限 每个元素独立计算自己的 ULP 和 max(fixedLimit, 32·ULP),而非用全局最大 ULP 作为统一限。 ### 特殊值处理 - NaN==NaN / INF==INF ← 由基类 PrecisionStrategy::shouldSkip 拦截,**计入总数,算 pass** - 其余含特殊值的对(如 INF vs 5.0, NaN vs 1.0, +INF vs -INF)← **直接 fail**,不进入公式计算(避免 INF-INF, NaN×rtol 等未定义行为) - 标量路径 verifyScalar 与向量路径 processElement 行为完全一致(同样有 isnan||isinf 守卫) ### test/frame/types.h 改动 - PrecisionMode 枚举新增 MIXED_TOLERANCE - VerifyConfig.mode 默认值由 PrecisionMode::ABS 改为 PrecisionMode::MIXED_TOLERANCE - 新增 6 个字段:mixedAtol、mixedRtol、mixedRequiredMatchedRatio、mixedMaxAbsErrorLimit、mixedMantissaBits、mixedEmin ### test/frame/verify.h 改动 **新增 MixedToleranceStrategy 类**(verify.h:312): - 构造签名:(absTol, relTol, reqRatio, fixedLimit, mantissaBits, emin) - processElement 内:每元素独立 tolLimit = atol + rtol·|g|,独立 ulpLimit = max(fixedLimit, 32·ULP_at_|g|) - reportResult:pass = (matchedRatio ≥ reqRatio) AND !maxAbsErrorLimitFailed **扩展 Verifier 类**: - createStrategy switch 新增 MIXED_TOLERANCE 分支 - verifyScalar 新增 MIXED_TOLERANCE 分支,含 isnan||isinf 守卫 + 双闸(diff ≤ tolLimit AND diff ≤ maxAbsErrorLimit) **新增辅助函数**(按调用方所需暴露): | 函数 | 说明 | |---|---| | getMantissaBits(aclDataType) | 按 dtype 返回 mantissa 位数 | | getEmin(aclDataType) | 按 dtype 返回 IEEE 754 定义的 EMIN(各 dtype 各异,非恒为 -14) | | getUlpsAt(magnitude, mantissaBits, emin) | 2^(floor(log2\|x\|)-m),x=0 用正确 EMIN | | getMixedToleranceDefaults(aclDataType) | 返回 rtol/atol/fixed/m/emin 五元组 | | applyMixedTolerance(cfg, dtype, float*, size_t) | **向量场景**:填配置 + 按最大有限 golden 算 32·ULP limit | | applyMixedTolerance(cfg, dtype, float) | **标量场景 overload**:填配置 + 按单个 golden 算 32·ULP limit | ### 阈值表(experimental_standard.md § 2.2) | dtype | rtol | atol | fixed limit | mantissa bits | EMIN | |---|---|---|---|---|---| | FP16 | 2^-9 (1.95e-3) | 2^-9 (1.95e-3) | 1e-1 | 10 | -14 | | BF16 | 2^-6 (1.56e-2) | 2^-6 (1.56e-2) | 1e-0 | 7 | -126 | | FP32 | 2^-10 (9.77e-4) | 2^-16 (1.53e-5) | 1e-2 | 23 | -126 | | FP8_E4M3FN | 2^-2 (0.25) | 2^-4 (0.0625) | 1e-0 | 3 | -6 | | FP8_E5M2 | 2^-1 (0.5) | 2^-3 (0.125) | 1e-1 | 2 | -14 | ### 使用方法 **向量场景**: cpp VerifyConfig cfg; applyMixedTolerance(cfg, ACL_BF16, goldenPtr, count); // 一行填配置 EXPECT_TRUE(Verifier::verifyVector(actualPtr, goldenPtr, count, stride, cfg, caseId)); **标量场景**: cpp VerifyConfig cfg; applyMixedTolerance(cfg, ACL_FLOAT16, goldenVal); // 单参数 overload EXPECT_TRUE(Verifier::verifyScalar(actualVal, goldenVal, cfg, caseId)); 两个 overload 的签名对 caller 完全无感:内部自动处理 mantissaBits / emin / per-element ULP 等细节。 ### 兼容性 - 旧策略(MERE_MARE / ABS / REL / COMBINED / EXACT / INTEGER)及旧辅助函数(getMereThreshold / getMareMultiplier)全部保留 - 显式写 cfg.mode = PrecisionMode::MERE_MARE 的旧调用不受影响 - VerifyConfig 默认 mode 改为 MIXED_TOLERANCE,未显式设置 mode 的旧调用会自动走新模式(需 review) ## 关联的Issue https://gitcode.com/cann/ops-blas/issues/312 ## 文档更新 本次 PR 未修改文档文件。test/frame/types.h 与 test/frame/verify.h 中的新增枚举值、字段、函数已通过代码注释说明。存量文档(docs/zh/develop/st_develop_guide.md、agent/skills/blas-ST-develop/SKILL.md、仓库根 README.md)的同步更新在未来进一步实现。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!283 | 1 个月前 | |
feat(arch35): sasum、snrm2、srot、srotg、sscal、scalex适配混合容差精度标准 Co-authored-by: chensi79<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !294 merge feat/mixed-tolerance-arch35 into master feat(arch35): sasum、snrm2、srot、srotg、sscal、scalex适配混合容差精度标准 Created-by: chensi79 Commit-by: chensi79 Merged-by: cann-robot Description: ## 描述 将 arch35 各算子测试中分散的精度验证逻辑统一替换为 applyMixedTolerance 混合容差标准,消除各测试文件中重复手写的 isinf/isnan/ABS/REL/MERE_MARE 判定分支,统一调用框架提供的混合容差接口。 涉及算子:sasum、snrm2、srot、srotg、sscal、scalex。 ## 关联的Issue https://gitcode.com/cann/ops-blas/issues/320 ## 测试 - 修改覆盖 arch35 下 6 个算子的测试用例,验证逻辑改为统一调用 applyMixedTolerance - 保留原有 CSV 驱动测试用例,仅替换精度校验部分  ## 文档更新 无需更新文档 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:测试框架适配 See merge request: cann/ops-blas!294 | 1 个月前 | |
feat(test): rotm,rotmg,dotex适配混合容差精度验证 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !296 merge mix into master feat(test): rotm,rotmg,dotex适配混合容差精度验证 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 rotm、rotmg、dotex 三个算子适配新增的混合容差精度标准(applyMixedTolerance),替代原有手动 MERE_MARE/EXACT/REL 精度校验模式。 变更内容: - test.cpp:将手动精度配置(MERE_MARE/EXACT/REL)替换为 applyMixedTolerance 接口调用 - CSV:移除 mere_threshold、mare_multiplier 列 ## 关联的Issue https://gitcode.com/cann/ops-blas/issues/321 ## 测试 bash build.sh --soc=ascend950 --ops=rotm,rotmg,dotex --run  - rotm: 57 tests PASSED - rotmg: 61 tests PASSED - dotex: 45 tests PASSED ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:适配新精度标准 See merge request: cann/ops-blas!296 | 1 个月前 | |
feat(test): rotm,rotmg,dotex适配混合容差精度验证 Co-authored-by: LuckySun<sunwenlong8@huawei.com> # message auto-generated for no-merge-commit merge: !296 merge mix into master feat(test): rotm,rotmg,dotex适配混合容差精度验证 Created-by: LuckySun Commit-by: LuckySun Merged-by: cann-robot Description: ## 描述 rotm、rotmg、dotex 三个算子适配新增的混合容差精度标准(applyMixedTolerance),替代原有手动 MERE_MARE/EXACT/REL 精度校验模式。 变更内容: - test.cpp:将手动精度配置(MERE_MARE/EXACT/REL)替换为 applyMixedTolerance 接口调用 - CSV:移除 mere_threshold、mare_multiplier 列 ## 关联的Issue https://gitcode.com/cann/ops-blas/issues/321 ## 测试 bash build.sh --soc=ascend950 --ops=rotm,rotmg,dotex --run  - rotm: 57 tests PASSED - rotmg: 61 tests PASSED - dotex: 45 tests PASSED ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:适配新精度标准 See merge request: cann/ops-blas!296 | 1 个月前 | |
feat(test): saxpy、axpy_ex、sgemv 迁移至MIXED_TOLERANCE Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !288 merge feat/saxpy-axpy-ex-sgemv-mixed-tolerance into master feat(test): saxpy、axpy_ex、sgemv 迁移至MIXED_TOLERANCE Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 对齐生态算子开源精度标准(commit 2a0ca68 引入的 MIXED_TOLERANCE 策略),将 saxpy、axpy_ex、sgemv 三个 arch35 算子的 ST 测试精度验证从旧的 MERE_MARE 模式迁移到新的 MIXED_TOLERANCE 模式。 ### 核心改动 **测试文件**(3 个): - test/saxpy/arch35/saxpy_test.cpp: 删除 mereThreshold=1e-13, mareMultiplier=10.0,改用 applyMixedTolerance(cfg, ACL_FLOAT, goldenY.data(), p.n) - test/axpy_ex/arch35/axpy_ex_test.cpp: 删除 CSV-driven threshold 设置,改用 applyMixedTolerance(cfg, p.yType, yGolden.data(), p.n)(按 dtype 自动填充) - test/gemv/sgemv/arch35/sgemv_test.cpp: 同上 **文档**(3 个): - agent/skills/blas-ST-develop/SKILL.md: 精度模式选择表更新(MIXED_TOLERANCE 为推荐模式) - agent/skills/blas-new-op-workflow/references/task-prompts.md: 新算子 workflow 的精度要求更新 - docs/zh/develop/st_develop_guide.md: 删除 CSV mere_threshold / mare_multiplier 列(MIXED_TOLERANCE 模式下无需在 CSV 中指定阈值) ### 兼容性 - 旧 MERE_MARE 策略及 helper 函数(getMereThreshold/getMareMultiplier)保持向后兼容,本 PR 中仅 3 个测试文件迁移 - VerifyConfig.mode 默认值仍为 PrecisionMode::ABS(PR 描述未实际落地此变更) ## 关联的Issue [#316](https://gitcode.com/cann/ops-blas/issues/316) ## 测试 3 个算子全部 on-device 测试通过(设备:Ascend 950 PR): | 算子 | 测试用例数 | 结果 | |------|-----------|------| | saxpy | 23 | ALL PASSED | | axpy_ex | 79 | ALL PASSED | | sgemv | 64 | ALL PASSED | 验证脚本:build/test/saxpy/saxpy_test, build/test/axpy_ex/axpy_ex_test, build/test/gemv/sgemv/sgemv_test ## 文档更新 - agent/skills/blas-ST-develop/SKILL.md: §1.2 精度模式表重写(删除 MERE_MARE/ABS 列,新增 MIXED_TOLERANCE 配置示例) - agent/skills/blas-new-op-workflow/references/task-prompts.md: 精度模式规则更新 - docs/zh/develop/st_develop_guide.md: §1.3 CSV 列定义删除 mere_threshold/mare_multiplier;§2 参考实现 gbmv 精度模式由 MERE_MARE 更新为 MIXED_TOLERANCE ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!288 | 1 个月前 | |
feat(arch35/sbmv,spmv,symv,trmv,tbmv): 适配混合容差精度标准 Co-authored-by: xujiachen8<xujiachen8@h-partners.com> # message auto-generated for no-merge-commit merge: !286 merge dev into master feat(arch35/sbmv,spmv,symv,trmv,tbmv): 适配混合容差精度标准 Created-by: xujiachen8 Commit-by: xujiachen8 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> arch35 下 sbmv, spmv, symv, trmv, tbmv 五个算子适配新增的混合容差精度标准 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> bash build.sh --soc=ascend950 --ops=ssbmv,sspmv,ssymv,strmv,stbmv --run  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: See merge request: cann/ops-blas!286 | 1 个月前 | |
feat(arch35): sasum、snrm2、srot、srotg、sscal、scalex适配混合容差精度标准 Co-authored-by: chensi79<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !294 merge feat/mixed-tolerance-arch35 into master feat(arch35): sasum、snrm2、srot、srotg、sscal、scalex适配混合容差精度标准 Created-by: chensi79 Commit-by: chensi79 Merged-by: cann-robot Description: ## 描述 将 arch35 各算子测试中分散的精度验证逻辑统一替换为 applyMixedTolerance 混合容差标准,消除各测试文件中重复手写的 isinf/isnan/ABS/REL/MERE_MARE 判定分支,统一调用框架提供的混合容差接口。 涉及算子:sasum、snrm2、srot、srotg、sscal、scalex。 ## 关联的Issue https://gitcode.com/cann/ops-blas/issues/320 ## 测试 - 修改覆盖 arch35 下 6 个算子的测试用例,验证逻辑改为统一调用 applyMixedTolerance - 保留原有 CSV 驱动测试用例,仅替换精度校验部分  ## 文档更新 无需更新文档 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:测试框架适配 See merge request: cann/ops-blas!294 | 1 个月前 | |
feat(arch35): sasum、snrm2、srot、srotg、sscal、scalex适配混合容差精度标准 Co-authored-by: chensi79<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !294 merge feat/mixed-tolerance-arch35 into master feat(arch35): sasum、snrm2、srot、srotg、sscal、scalex适配混合容差精度标准 Created-by: chensi79 Commit-by: chensi79 Merged-by: cann-robot Description: ## 描述 将 arch35 各算子测试中分散的精度验证逻辑统一替换为 applyMixedTolerance 混合容差标准,消除各测试文件中重复手写的 isinf/isnan/ABS/REL/MERE_MARE 判定分支,统一调用框架提供的混合容差接口。 涉及算子:sasum、snrm2、srot、srotg、sscal、scalex。 ## 关联的Issue https://gitcode.com/cann/ops-blas/issues/320 ## 测试 - 修改覆盖 arch35 下 6 个算子的测试用例,验证逻辑改为统一调用 applyMixedTolerance - 保留原有 CSV 驱动测试用例,仅替换精度校验部分  ## 文档更新 无需更新文档 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述:测试框架适配 See merge request: cann/ops-blas!294 | 1 个月前 | |
Feat: 新增面向arch35的aclblasSgemmEx接口 Co-authored-by: Zitao Wang<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !276 merge aclblasSgemmEx into master Feat: 新增面向arch35的aclblasSgemmEx接口 Created-by: wangzitao_leo Commit-by: Zitao Wang Merged-by: cann-robot Description: ## 描述 本 PR 新增 aclblasSgemmEx 算子,面向 Ascend950(arch35 / DAV_3510)架构实现单精度(FP32)通用矩阵乘法 C = alpha * op(A) * op(B) + beta * C。 ### 算子功能 - 支持矩阵 A/B 的转置组合:ACLBLAS_OP_N(不转置)、ACLBLAS_OP_T(转置)、ACLBLAS_OP_C(共轭转置,FP32 实数等价于转置) - 支持 alpha/beta 标量缩放融合:alpha=1.0 且 beta=0.0 时 Cube Kernel 直接写回 C;其他场景由 Vector Kernel 执行 C = alpha*tempAB + beta*C 后处理 - 支持完整边界情况处理:m==0/n==0 直接返回、k==0/alpha==0 跳过矩阵乘、C==nullptr 且 beta==0 直接返回 - 矩阵采用 BLAS 标准列主序存储,通过列主序 trick(交换 A↔B、M↔N、transA↔transB)适配 NPU Cube 行主序分块计算 ### 目标芯片与数据类型 | 项目 | 内容 | |------|------| | 目标芯片 | Ascend950(Ascend950PR / Ascend950DT) | | 目标架构 | arch35(DAV_3510) | | 数据类型 | FP32(A、B、C、alpha、beta 均为 float) | | CANN 版本 | 9.1.0 | ### 实现方法 采用 SIMD membase 编程模型(TPipe/TQue 流水线 + BlockMmad 低阶 API),双 Kernel 架构: - **Cube Kernel**:GM→(Nd2Nz)→L1→(LoadData2D V2)→L0A/L0B→(Mmad)→L0C→(Fixpipe)→GM,FP32 分块 baseM=32/baseN=16/baseK=8,L0C 2D 分块控制占用 ≤ 256KB,多核 2D 分块(mBlocks × nBlocks)最大化核利用率 - **Vector Kernel**:GM→(DataCopy)→UB→(Muls+Add)→GM,执行 alpha/beta 后处理,列间多核并行 ### 交付物清单 **算子代码:** - blas/sgemm_ex/README.md — 算子接口文档(含函数原型、参数说明、约束、调用示例) - blas/sgemm_ex/arch35/sgemm_ex_host.cpp — Host 侧参数校验、Tiling 计算、Kernel launch - blas/sgemm_ex/arch35/sgemm_ex_kernel.cpp — Cube Kernel + Vector Kernel 实现 - blas/sgemm_ex/arch35/sgemm_ex_kernel.h — Kernel 函数声明 - blas/sgemm_ex/arch35/sgemm_ex_tiling_data.h — TilingData 结构体定义 - include/cann_ops_blas.h — 新增 aclblasSgemmEx API 声明 **测试代码:** - test/sgemm_ex/CMakeLists.txt — 测试构建配置 - test/sgemm_ex/sgemm_ex_param.h — 参数解析(继承 BlasTestParamBase) - test/sgemm_ex/sgemm_ex_golden.h — CPU golden 计算(cblas_sgemm) - test/sgemm_ex/arch35/sgemm_ex_npu_wrapper.h — NPU 调用封装 - test/sgemm_ex/arch35/sgemm_ex_test.cpp — GTest 测试入口(TEST_P + absFloor 动态阈值) - test/sgemm_ex/arch35/sgemm_ex_test.csv — 58 条 CSV 参数化用例(L0 18 条 + L1 40 条) **测试框架增强:** - test/frame/types.h — VerifyConfig 新增 absFloor 字段(默认 0 不影响其他算子) - test/frame/verify.h — MereMareStrategy 新增 absFloor 逻辑(绝对误差低于阈值时跳过统计) ## 关联的Issue [#308](https://gitcode.com/cann/ops-blas/issues/308) ## 测试 ### 精度测试(ST) 测试环境:Ascend950 / arch35 / CANN 9.1.0,编译器 bisheng (ASC) / GCC 13.3.0 (CXX)。 | 验证项 | 结果 | 详情 | |--------|------|------| | 编译验证 | 通过 | libops_blas.so + sgemm_ex_test 编译成功 | | 精度验证 | 通过 | 59/59 通过(1 条 TEST_F + 58 条 CSV 驱动) | | 回归检查 | 通过 | L0 用例 19 条全部回归通过,无退化 | | 测试代码完整性 | 通过 | CSV 行数一致、golden/npu_wrapper/param 逻辑未修改 | **通过率:59/59 (100%)**,其中 L0 用例 19 条(基础功能 + 边界 + 异常校验)、L1 用例 40 条(大 shape + 非对齐 + leading dimension + 负系数 + NaN/Inf + 异常输入)。 **精度标准:** - MERE ≤ 2^-13(最大相对误差) - MARE ≤ 10 × 2^-13(最大绝对相对误差) - 动态 absFloor = max(1e-3, sqrt(K) × max|A| × max|B| × 2^-22),覆盖 FP32 Cube 累加噪声 **测试命令:** bash bash build.sh --ops=sgemm_ex --soc=ascend950 --run ### 性能测试 测试环境:Ascend950 / arch35 / CANN 9.1.0,32 Cube + 32 Vector 核心,msprof task-based AI Core profiling。 | shape (NN, FP32) | 耗时(us) | TFLOPS | AI Core 利用率 | 核数 | |------------------|---------|--------|---------------|------| | 1024×1024×1024 | 22,280 | 0.096 | 99.8% | 32 | | 2048×2048×2048 | 177,720 | 0.097 | 99.9% | 32 | | 4096×4096×1024 | 359,425 | 0.096 | 99.8% | 32 | **性能状态:首版实现,功能正确,性能待优化。** 多核利用率与功能正确性达标:32/32 核全部使用、Cube Utilization 99.8%、转置组合(NN/NT/TN/TT)性能一致。当前存在 Scalar Bound 瓶颈(Scalar 占比 87.2%,MAC 利用率 2.6%),根因为 PipeBarrier<PIPE_ALL> 全屏障串行化流水线 + L1 单缓冲。已明确优化路径(P0:细粒度屏障 + L1 双缓冲,预期提升 5-10 倍),留待后续性能迭代实施。 ## 文档更新 - 新增 blas/sgemm_ex/README.md:算子接口文档,含产品支持情况、函数原型、参数说明、约束说明、边界情况处理、调用示例及预期输出 - 新增 include/cann_ops_blas.h 中 aclblasSgemmEx 函数声明 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!276 | 2 个月前 | |
feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !287 merge feat/mixed-tolerance-adapt into master feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 将 7 个算子的精度验证方式从旧精度模式( MERE_MARE/REL)迁移至 MIXED_TOLERANCE 混合容差方案。 ### 变更原因 PR #283 引入了 applyMixedTolerance API,提供了更合理的混合容差精度验证机制。为保持测试框架的一致性,需要将存量算子的精度验证方式统一迁移至该方案。 ### 变更方法 对以下 7 个算子的测试文件进行迁移: - sdot(PR #89) - sger(PR #137) - sspr(PR #164) - sspr2(PR #202) - stbsv(PR #218) - snrm2_ex(PR #231) - gemv_strided_batched(PR #250) 每个算子的改动为:测试文件中将旧精度模式替换为调用 applyMixedTolerance API。 共计 7 个测试文件变更,16 行新增,34 行删除。README 不涉及变更(精度验证策略属于测试内部实现,不写入面向使用者的算子 README)。 ## 关联的Issue [#315](https://gitcode.com/cann/ops-blas/issues/315) ## 测试 - 执行所有 7 个算子的单元测试,共 303 个测试用例,全部通过 ## 文档更新 不涉及。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试框架迁移(将算子精度验证统一迁移至 MIXED_TOLERANCE 方案) See merge request: cann/ops-blas!287 | 1 个月前 | |
feat(arch35/sbmv,spmv,symv,trmv,tbmv): 适配混合容差精度标准 Co-authored-by: xujiachen8<xujiachen8@h-partners.com> # message auto-generated for no-merge-commit merge: !286 merge dev into master feat(arch35/sbmv,spmv,symv,trmv,tbmv): 适配混合容差精度标准 Created-by: xujiachen8 Commit-by: xujiachen8 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> arch35 下 sbmv, spmv, symv, trmv, tbmv 五个算子适配新增的混合容差精度标准 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> bash build.sh --soc=ascend950 --ops=ssbmv,sspmv,ssymv,strmv,stbmv --run  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: See merge request: cann/ops-blas!286 | 1 个月前 | |
feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !287 merge feat/mixed-tolerance-adapt into master feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 将 7 个算子的精度验证方式从旧精度模式( MERE_MARE/REL)迁移至 MIXED_TOLERANCE 混合容差方案。 ### 变更原因 PR #283 引入了 applyMixedTolerance API,提供了更合理的混合容差精度验证机制。为保持测试框架的一致性,需要将存量算子的精度验证方式统一迁移至该方案。 ### 变更方法 对以下 7 个算子的测试文件进行迁移: - sdot(PR #89) - sger(PR #137) - sspr(PR #164) - sspr2(PR #202) - stbsv(PR #218) - snrm2_ex(PR #231) - gemv_strided_batched(PR #250) 每个算子的改动为:测试文件中将旧精度模式替换为调用 applyMixedTolerance API。 共计 7 个测试文件变更,16 行新增,34 行删除。README 不涉及变更(精度验证策略属于测试内部实现,不写入面向使用者的算子 README)。 ## 关联的Issue [#315](https://gitcode.com/cann/ops-blas/issues/315) ## 测试 - 执行所有 7 个算子的单元测试,共 303 个测试用例,全部通过 ## 文档更新 不涉及。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试框架迁移(将算子精度验证统一迁移至 MIXED_TOLERANCE 方案) See merge request: cann/ops-blas!287 | 1 个月前 | |
feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !287 merge feat/mixed-tolerance-adapt into master feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 将 7 个算子的精度验证方式从旧精度模式( MERE_MARE/REL)迁移至 MIXED_TOLERANCE 混合容差方案。 ### 变更原因 PR #283 引入了 applyMixedTolerance API,提供了更合理的混合容差精度验证机制。为保持测试框架的一致性,需要将存量算子的精度验证方式统一迁移至该方案。 ### 变更方法 对以下 7 个算子的测试文件进行迁移: - sdot(PR #89) - sger(PR #137) - sspr(PR #164) - sspr2(PR #202) - stbsv(PR #218) - snrm2_ex(PR #231) - gemv_strided_batched(PR #250) 每个算子的改动为:测试文件中将旧精度模式替换为调用 applyMixedTolerance API。 共计 7 个测试文件变更,16 行新增,34 行删除。README 不涉及变更(精度验证策略属于测试内部实现,不写入面向使用者的算子 README)。 ## 关联的Issue [#315](https://gitcode.com/cann/ops-blas/issues/315) ## 测试 - 执行所有 7 个算子的单元测试,共 303 个测试用例,全部通过 ## 文档更新 不涉及。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试框架迁移(将算子精度验证统一迁移至 MIXED_TOLERANCE 方案) See merge request: cann/ops-blas!287 | 1 个月前 | |
feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !287 merge feat/mixed-tolerance-adapt into master feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 将 7 个算子的精度验证方式从旧精度模式( MERE_MARE/REL)迁移至 MIXED_TOLERANCE 混合容差方案。 ### 变更原因 PR #283 引入了 applyMixedTolerance API,提供了更合理的混合容差精度验证机制。为保持测试框架的一致性,需要将存量算子的精度验证方式统一迁移至该方案。 ### 变更方法 对以下 7 个算子的测试文件进行迁移: - sdot(PR #89) - sger(PR #137) - sspr(PR #164) - sspr2(PR #202) - stbsv(PR #218) - snrm2_ex(PR #231) - gemv_strided_batched(PR #250) 每个算子的改动为:测试文件中将旧精度模式替换为调用 applyMixedTolerance API。 共计 7 个测试文件变更,16 行新增,34 行删除。README 不涉及变更(精度验证策略属于测试内部实现,不写入面向使用者的算子 README)。 ## 关联的Issue [#315](https://gitcode.com/cann/ops-blas/issues/315) ## 测试 - 执行所有 7 个算子的单元测试,共 303 个测试用例,全部通过 ## 文档更新 不涉及。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试框架迁移(将算子精度验证统一迁移至 MIXED_TOLERANCE 方案) See merge request: cann/ops-blas!287 | 1 个月前 | |
feat: 全部复数算子接口类型安全改造,彻底回归纯C Co-authored-by: root<1302896824@qq.com> # message auto-generated for no-merge-commit merge: !264 merge feat-all-complex-ops-typed-api into master feat: 全部复数算子接口类型安全改造,彻底回归纯C Created-by: zhanghua145 Commit-by: root Merged-by: cann-robot Description: ## 描述 将所有复数算子接口的 std::complex<float> 替换为 aclblasComplex,uint8_t* 替换为 aclblasComplex*,删除 #include <complex>,使头文件彻底回归纯 C。 ### 改动内容 **1. 类型定义层(cann_ops_blas_common.h)** - 新增 aclblasDoubleComplex(双精度复数 struct) **2. 运算符重载(blas/common/helper/complex_ops.h)** - 新增 C++ 自由函数运算符重载:operator+/-/*//、==、!=、aclblasAbs - 对 aclblasComplex 和 aclblasDoubleComplex 均提供 - C 调用方不可见(#ifdef __cplusplus 隔离) **3. Host API 签名(cann_ops_blas.h)** - 删除 #include <complex> - 所有复数算子标量参数:std::complex<float> → aclblasComplex - 所有复数算子向量/矩阵指针:uint8_t* → aclblasComplex* **4. Host 实现 + 测试同步迁移** 涉及算子(共 10 个): - Caxpy / CgemvBatched / Cgerc / Cscal / Cgemv(标量+向量全改) - Ccopy / Scnrm2 / Csscal / Cswap / ComplexMatDot(仅向量指针) Kernel 代码不动,Host 实现内部通过 reinterpret_cast<uint8_t*> 桥接。 ### 关联 Issue Close #262 ### 已知遗留问题 #290 aclblasCgemvBatched 运行时 segfault 为主分支遗留问题,在原始代码上同样复现,与本次改造无关。 ## 关联的Issue - [#262](https://gitcode.com/cann/ops-blas/issues/262) 复数算子接口类型安全问题 - [#290](https://gitcode.com/cann/ops-blas/issues/290) aclblasCgemvBatched segfault(主分支遗留) ## 测试 - bash build.sh --soc=ascend910b 编译通过 - bash build.sh --soc=ascend910b --ops=caxpy,cscal,cswap,scopy,snrm2,sscal,cgemv,cgerc,cgemv_batched --run 编译并运行 - caxpy/cscal/cswap/ccopy/scnrm2/sscal/cgemv/cgerc 测试通过 - cgemv_batched segfault 为主分支遗留问题(#290) 当前分支: 主分支: ## 文档更新 - blas/axpy/README.md:aclblasCaxpy 函数原型、参数说明、调用示例已同步更新 ## 类型标签 - [x] 新特性 See merge request: cann/ops-blas!264 | 2 个月前 | |
feat(blas): 新增面向arch35的aclblasSsymm接口 Co-authored-by: eternityk<taoyikun@huawei.com> # message auto-generated for no-merge-commit merge: !170 merge aclblasSsymm into master feat(blas): 新增面向arch35的aclblasSsymm接口 Created-by: eternityk Commit-by: eternityk Merged-by: cann-robot Description: ## 描述 本次新增 arch35 实现,使 SSYMM 在 ascend950 上可用。 SSYMM 计算公式: side=LEFT: C = alpha * A_sym * B + beta * C side=RIGHT: C = alpha * B * A_sym + beta * C 其中 A_sym 为对称矩阵(仅存储 UPPER 或 LOWER 一个三角),B 和 C 为普通矩阵。 当前实现范围聚焦于: 数据类型:float 对称矩阵乘法语义:LEFT/RIGHT、LOWER/UPPER ## 关联的Issue [#175](https://gitcode.com/cann/ops-blas/issues/175) ## 测试  ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!170 | 2 个月前 | |
feat(arch35/sbmv,spmv,symv,trmv,tbmv): 适配混合容差精度标准 Co-authored-by: xujiachen8<xujiachen8@h-partners.com> # message auto-generated for no-merge-commit merge: !286 merge dev into master feat(arch35/sbmv,spmv,symv,trmv,tbmv): 适配混合容差精度标准 Created-by: xujiachen8 Commit-by: xujiachen8 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> arch35 下 sbmv, spmv, symv, trmv, tbmv 五个算子适配新增的混合容差精度标准 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> bash build.sh --soc=ascend950 --ops=ssbmv,sspmv,ssymv,strmv,stbmv --run  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: See merge request: cann/ops-blas!286 | 1 个月前 | |
[bugfix] 将精度校验规则调整为混合精度模式 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !285 merge bugfix into master [bugfix] 将精度校验规则调整为混合精度模式 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将syr,syr2,trsv,gbmv,tpsv,getrs_batched,gemv_batched,matinv_batched,gels_batched,getrf_batched,getri_batched算子精度校验规则调整为混合精度模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/319 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!285 | 1 个月前 | |
[bugfix] 将精度校验规则调整为混合精度模式 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !285 merge bugfix into master [bugfix] 将精度校验规则调整为混合精度模式 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将syr,syr2,trsv,gbmv,tpsv,getrs_batched,gemv_batched,matinv_batched,gels_batched,getrf_batched,getri_batched算子精度校验规则调整为混合精度模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/319 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!285 | 1 个月前 | |
feat(arch35/sbmv,spmv,symv,trmv,tbmv): 适配混合容差精度标准 Co-authored-by: xujiachen8<xujiachen8@h-partners.com> # message auto-generated for no-merge-commit merge: !286 merge dev into master feat(arch35/sbmv,spmv,symv,trmv,tbmv): 适配混合容差精度标准 Created-by: xujiachen8 Commit-by: xujiachen8 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> arch35 下 sbmv, spmv, symv, trmv, tbmv 五个算子适配新增的混合容差精度标准 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> bash build.sh --soc=ascend950 --ops=ssbmv,sspmv,ssymv,strmv,stbmv --run  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: See merge request: cann/ops-blas!286 | 1 个月前 | |
修正4个算子的结构问题,按照sig例会要求改为异步架构 Co-authored-by: zhaotiensn<zhaotiensn@qq.com> # message auto-generated for no-merge-commit merge: !199 merge master into master 修正4个算子的结构问题,按照sig例会要求改为异步架构 Created-by: zhaotiensn Commit-by: zhaotiensn Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 按照例会的要求,将spmv等四个算子改为异步架构,将host侧和kernel侧解耦,并且修改了对应的test ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> Issue [#201](https://gitcode.com/cann/ops-blas/issues/201) ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!199 | 2 个月前 | |
[bugfix] 将精度校验规则调整为混合精度模式 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !285 merge bugfix into master [bugfix] 将精度校验规则调整为混合精度模式 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将syr,syr2,trsv,gbmv,tpsv,getrs_batched,gemv_batched,matinv_batched,gels_batched,getrf_batched,getri_batched算子精度校验规则调整为混合精度模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/319 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!285 | 1 个月前 | |
修复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 | 2 个月前 | |
fix(trmm):aclblasStrmm 接口参数对齐 BLAS 标准 Co-authored-by: eternityk<taoyikun@huawei.com> # message auto-generated for no-merge-commit merge: !272 merge master into master fix(trmm):aclblasStrmm 接口参数对齐 BLAS 标准 Created-by: eternityk Commit-by: eternityk Merged-by: cann-robot Description: ## 描述 aclblasStrmm 接口参数设计不符合 BLAS 标准。当前接口采用 in-place 设计(结果写回 B 矩阵),缺少独立的输出矩阵 C 及其主维参数 ldc;维度参数 m/n/lda/ldb 使用 int64_t 而非 BLAS 标准的 int 类型;参数命名 transA 与标准 BLAS 的 trans 不一致。这导致接口与标准 BLAS TRMM 签名不兼容,用户迁移成本高。 ## 关联的Issue [#310](https://gitcode.com/cann/ops-blas/issues/310) ## 测试  ## 文档更新 更新了README.md文件。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!272 | 2 个月前 | |
feat(arch35/sbmv,spmv,symv,trmv,tbmv): 适配混合容差精度标准 Co-authored-by: xujiachen8<xujiachen8@h-partners.com> # message auto-generated for no-merge-commit merge: !286 merge dev into master feat(arch35/sbmv,spmv,symv,trmv,tbmv): 适配混合容差精度标准 Created-by: xujiachen8 Commit-by: xujiachen8 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> arch35 下 sbmv, spmv, symv, trmv, tbmv 五个算子适配新增的混合容差精度标准 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> bash build.sh --soc=ascend950 --ops=ssbmv,sspmv,ssymv,strmv,stbmv --run  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: See merge request: cann/ops-blas!286 | 1 个月前 | |
Feat: 新增面向arch35的aclblasStrsm接口 Co-authored-by: Zhang Hua<zhanghua25@mails.ucas.ac.cn> # message auto-generated for no-merge-commit merge: !260 merge aclblastrsm into master Feat: 新增面向arch35的aclblasStrsm接口 Created-by: zhanghua145 Commit-by: Zhang Hua Merged-by: cann-robot Description: ## 描述 新增三角矩阵求解算子 aclblasStrsm(arch35),实现 op(A) * X = alpha * B(side=LEFT)或 X * op(A) = alpha * B(side=RIGHT)。 ### 编程模型 - SIMT 多核求解,按列切分 B 矩阵分配到多个 AIV 核 - m>128 或 n>=256 时走 blocked 路径:panel solve + Cube GEMM trailing update - noTrans 路径用列主序技巧直读 A/B,消除 extract 搬运 - RIGHT side n<=128 通过 RIGHT 模板直接求解,消除转置拷贝 - alpha==0 快速路径:zero fill kernel,跳过 A 的 H2D 拷贝 - GEMM tile 按维度自适应选择,panel size 动态选择 - Cube GEMM trailing update 采用 L0/L1 双缓冲软件流水线,载入与计算重叠 - 点积归约采用树形归约,热循环内行列索引改用增量追踪避免除法/取模 ### 代码文件 | 文件 | 说明 | |------|------| | blas/trsm/arch35/strsm_host.cpp | Host 参数校验 + Tiling 计算 + 路径分发 | | blas/trsm/arch35/strsm_kernel.cpp | AIV SIMT kernel(求解/right/zero/transpose/panel) | | blas/trsm/arch35/strsm_blocked_kernel.cpp | Blocked 路径 kernel(extract/axpy/scale)+ Cube GEMM kernel | | blas/trsm/arch35/strsm_tiling_data.h | Tiling 数据结构 | | blas/trsm/README.md | 算子说明文档 + RAII 调用示例 | | test/trsm/strsm/ | 测试代码(golden 使用 cblas_strsm) | ### 测试 - CSV 驱动 116 条用例 + 3 个 TEST_F(NullHandle/NullAlpha/NullB) - 覆盖 side=LEFT/RIGHT、uplo=UPPER/LOWER、trans=N/T/C、diag=UNIT/NON_UNIT、alpha=0/正/负/极大极小、多核、大规模、边界(m=0/n=0)、错误参数校验 - Golden 使用 OpenBLAS cblas_strsm,精度 MERE+MARE 校验 - 测试结果:119/119 PASSED ## 关联的Issue [#116] See merge request: cann/ops-blas!260 | 2 个月前 | |
[bugfix] 将精度校验规则调整为混合精度模式 Co-authored-by: justsheldon<taoxudong@huawei.com> # message auto-generated for no-merge-commit merge: !285 merge bugfix into master [bugfix] 将精度校验规则调整为混合精度模式 Created-by: justsheldon Commit-by: justsheldon Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将syr,syr2,trsv,gbmv,tpsv,getrs_batched,gemv_batched,matinv_batched,gels_batched,getrf_batched,getri_batched算子精度校验规则调整为混合精度模式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/319 ## 测试 <!--描述进行了哪些测试来验证你的改动。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!285 | 1 个月前 | |
修复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 | 2 个月前 | |
Feat: 新增面向arch35的aclblasAxpyEx接口 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !223 merge aclblasAxpyEx into master Feat: 新增面向arch35的aclblasAxpyEx接口 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 新增面向 arch35(Ascend 950)的 aclblasAxpyEx 接口,实现 BLAS Level-1 AXPY 操作 y := alpha*x + y 的扩展版本,支持 FP16/BF16/FP32 多数据类型。 ### 实现方法 - **SIMD 连续路径**(incx==1 && incy==1):TBuf + DataCopy + Axpy(FP32)/ SIMD VF RegBase UNPACK/PACK(FP16/BF16) - **SIMT 跨步路径**(incx!=1 || incy!=1):__simt_vf__ + asc_vf_call,块级连续+线程级交错混合分布 - **多 dtype 分发**:以 xType 为 key 实例化不同模板参数 - **性能优化**:FP16/BF16 使用 VF 内 UNPACK/PACK 消除 UB 间 Cast(-29.7%/-33.8%);自适应核数优化小规模场景(-6.5%);SIMT 尾轮均衡降低核间不均衡(-42%~-52%) ### 交付物清单(18 文件) **算子代码(5 个)**: - blas/axpy_ex/arch35/axpy_ex_host.cpp — Host 侧实现(参数校验 + Tiling 计算 + 异步 launch) - blas/axpy_ex/arch35/axpy_ex_kernel.asc — Kernel 侧实现(SIMD + SIMT 双路径) - blas/axpy_ex/arch35/axpy_ex_kernel.h — kernel_do 函数签名声明 - blas/axpy_ex/arch35/axpy_ex_tiling_data.h — TilingData 结构体 - blas/axpy_ex/README.md — 算子文档 **公共 API(1 个)**: - include/cann_ops_blas.h — 新增 aclblasAxpyEx 声明 **测试代码(6 个)**: - test/axpy_ex/CMakeLists.txt — CMake 配置 - test/axpy_ex/axpy_ex_param.h — 参数结构体(含 alpha_null 标记机制) - test/axpy_ex/axpy_ex_golden.h — CPU golden(CBLAS saxpy + Cast) - test/axpy_ex/arch35/axpy_ex_npu_wrapper.h — NPU wrapper(alpha nullptr/device/host 三分支) - test/axpy_ex/arch35/axpy_ex_test.cpp — GTest 入口 - test/axpy_ex/arch35/axpy_ex_test.csv — CSV 用例表(78 行) **公共模块(5 个)**: - test/utils/dtype_compat.h — 新增公共 Cast 辅助函数 - test/frame/csv_loader.h — 新增 parseDataType 公共函数 - test/frame/verify.h — MereMareStrategy 扩展 INF mismatch 检测 - test/scalex/scalex_golden.h — 重构,Cast 函数移至公共模块 - test/scalex/scalex_param.h — 重构,parseDataType 移至公共模块 ## 关联的Issue [#242](https://gitcode.com/cann/ops-blas/issues/242) ## 测试 ### 精度测试 - ST 通过率:79/79(100%),含 1 个 NullHandle + 78 个 CSV 参数化用例 - 覆盖场景:FP32/FP16/BF16 全 dtype、正/负/混合步长、alpha Host/Device、NaN/INF 特殊值、大 shape(n=1048576) - 精度标准:MERE_MARE,FP32: 2^-13, FP16: 2^-10, BF16: 2^-7 - scalex 回归验证:90/90 通过,公共模块修改无回归 ### 性能测试 - SIMD FP32 1M:带宽利用率 39.2% - SIMD FP16 1M:经 UNPACK/PACK 优化后提速 29.7% - SIMD BF16 1M:经 UNPACK/PACK 优化后提速 33.8% - SIMT FP32 1M incx=2:带宽利用率 68.1%,VEC 88-91% - 小规模 1K:自适应核数优化提速 6.5% - SIMT 核间不均衡:经尾轮均衡从 57% 降至 29% ### 代码检视 - 3.1 检视通过,4.2 最终检视通过,无 HIGH 问题 - OAT 合规扫描通过(17 文件,0 问题) ## 文档更新 - 新增 blas/axpy_ex/README.md:算子功能描述、接口签名、参数说明、约束条件、调用示例 - 更新 include/cann_ops_blas.h:新增 aclblasAxpyEx API 声明 ## 类型标签 - [x] 新特性 See merge request: cann/ops-blas!223 | 2 个月前 | |
Feat: gemm batched with tensor api Co-authored-by: wang-zhiyue2<wangzhiyue2@huawei.com> # message auto-generated for no-merge-commit merge: !269 merge gemm_batched into master Feat: gemm batched with tensor api Created-by: wang-zhiyue2 Commit-by: wang-zhiyue2 Merged-by: cann-robot Description: ## 描述 添加gemm batched算子 ## 关联的Issue ## 测试 sgemm_batched共测试157个用例,1个硬编码用例,156个csv用例,157/157已全部通过。  cgemm_batched共测试166个用例,1个硬编码用例,165个csv用例,166/166已全部通过。  ## 文档更新 添加gemm batched的README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!269 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 |