| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 2 个月前 | |
feat: 新增面向 arch35 的 aclblasScalex 混合精度向量缩放接口 Co-authored-by: chensi79<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !162 merge aclblasScalex into master feat: 新增面向 arch35 的 aclblasScalex 混合精度向量缩放接口 Created-by: chensi79 Commit-by: chensi79 Merged-by: cann-robot Description: ## 描述 新增面向 Ascend950(arch35 / DAV_3510)的 aclblasScalex 算子,实现混合精度向量标量乘 x[j] = alpha * x[j](j = (i-1) * incx)。该算子是 BLAS SCAL 的扩展,支持 FP16 / BF16 / FP32 三种向量数据类型,计算始终以 FP32 精度执行后写回原类型。 ### 改动原因 ops-blas 库现有 aclblasSscal 仅支持纯 FP32 向量缩放,无法覆盖半精度(FP16/BF16)输入 + FP32 计算精度的混合精度场景。aclblasScalex 在同一接口下统一覆盖:alpha 固定 FP32(Host 或 Device 指针)、x 支持 FP16/BF16/FP32、executionType 固定 FP32。 ### 改动方法 - include/cann_ops_blas.h:新增 aclblasScalex 接口声明 - include/cann_ops_blas_common.h:新增 aclblasDataType_t 枚举(ACLBLAS_R_16F=150 / ACLBLAS_R_32F=151 / ACLBLAS_R_16BF=152) - blas/scalex/arch35/scalex_host.cpp:参数校验 + 按 incx 分发(==1 → SIMD,≠1 → SIMT)+ 多核切分 - blas/scalex/arch35/scalex_kernel.cpp:双路径 kernel - SIMD(scalex_aiv_kernel):连续访问,DataCopy + Muls - SIMT(scalex_simt_kernel):跨步访问,asc_vf_call 启动 SIMT 线程,支持 incx<0 反向遍历 - FP16/BF16 路径:Cast→FP32 → Muls → Cast 回原类型 - blas/scalex/arch35/scalex_tiling_data.h:tiling 数据结构 - blas/scalex/README.md:接口/参数/数据类型/支持规格/精度要求/调用示例 ### 支持规格 | 项目 | 内容 | |------|------| | 数据类型 | alpha=FP32, x∈{FP16, BF16, FP32}, execution=FP32 | | 目标芯片 | Ascend950(Ascend950DT / Ascend950PR)| | 目标架构 | arch35(DAV_3510)| | 编程模型 | SIMD(incx=1)+ SIMT(incx≠1)| ## 关联的Issue - https://gitcode.com/cann/ops-blas/issues/157 ## 测试 test/scalex/ 基于 gtest + CSV 参数化: - scalex_test.csv 覆盖 L0 边界与正常用例:n<0 / n==0 / n==1 / nullptr / incx==0 / 不支持类型 / FP16·BF16·FP32·incx=1 - scalex_npu_wrapper.h:NPU 端调用 wrapper;scalex_golden.h:FP32 精度参考实现 - 运行:bash build.sh --ops=scalex --run --soc=ascend950 ## 文档更新 新增 blas/scalex/README.md:完整接口、参数表、数据类型枚举、支持规格、精度要求(MARE/MERE)、返回值、调用示例(FP32 / FP16 混合精度 / incx 非连续三场景)。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!162 | 3 个月前 | |
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 | 3 个月前 | |
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 | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 |