| feat: 新增 sscal 算子 arch35 (ascend950) 实现 Co-authored-by: chensi79@huawei.com<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !136 merge scal into master feat: 新增 sscal 算子 arch35 (ascend950) 实现 Created-by: chensi79 Commit-by: chensi79@huawei.com Merged-by: cann-robot Description: ## 描述 为 sscal(向量缩放 x = alpha * x)算子新增 arch35 (ascend950/Atlas A5) 实现,并调整 aclblasSscal 接口签名以统一参数传递方式。 ### 改动内容 **1. 新增 arch35 (ascend950) sscal 实现** - blas/scal/sscal/arch35/sscal_host.cpp:host 侧实现,包含参数校验、tiling 计算(按 AIV 核数均分,ELEMENTS_PER_BLOCK=8 对齐)、kernel 启动 - blas/scal/sscal/arch35/sscal_kernel.cpp:kernel 侧实现,使用 AscendC TPipe + TQue 双队列流水,Muls 指令完成向量乘标量,支持非对齐 tail 处理(DataCopyPad) - blas/scal/sscal/arch35/sscal_tiling_data.h:tiling 数据结构定义(totalN/perCoreN/remainder/tileSize/alpha) **2. 修改 aclblasSscal 接口签名** - alpha:由值传递(float)改为指针传递(const float*) - x:由 uint8_t* 改为 float*,去除类型转换 - 参数类型:int64_t 简化为 int - 新增 arch35 重载 sscal_kernel_do(tiling 按值传递),保留 arch22 重载(tiling 按 GM 指针传递)以兼容 **3. 新增 arch35 测试套件** - gtest 框架,CSV 驱动 - 包含参数校验(null handle、null x、incx=0/-1、n=0/-1)、基础功能(n=1~8192)、边界值(alpha=0/负数/极大值)、特殊值(NaN/Inf/extreme)、非 2 的幂次 n 值 - CPU golden 参考实现用于精度比对(COMBINED 模式,abs_tol=1e-5, rel_tol=1e-5) **4. 更新文档** - blas/scal/sscal/README.md:更新为 arch35 实现说明,简化安装步骤 ### 改动原因 Atlas A5 (ascend950) 平台需要 sscal 算子的原生 AscendC 实现。 ### 涉及文件(14 个文件,+655 -98) | 状态 | 文件 | 说明 | |------|------|------| | M | blas/common/kernel_launch/aclblas_kernel_do.h | 新增 arch35 重载声明 | | M | blas/scal/sscal/README.md | 更新为 arch35 说明 | | M | blas/scal/sscal/arch22/sscal_host.cpp | 适配新 API 签名 | | A | blas/scal/sscal/arch35/sscal_host.cpp | arch35 host 实现 | | A | blas/scal/sscal/arch35/sscal_kernel.cpp | arch35 kernel 实现 | | A | blas/scal/sscal/arch35/sscal_tiling_data.h | tiling 数据结构 | | M | include/cann_ops_blas.h | 更新 aclblasSscal 声明 | | M | test/scal/sscal/CMakeLists.txt | ascend950 使用 gtest | | M | test/scal/sscal/arch22/sscal_test.cpp | 适配新 API 签名 | | A | test/scal/sscal/arch35/sscal_npu_wrapper.h | NPU 测试封装 | | A | test/scal/sscal/arch35/sscal_test.cpp | gtest 测试主体 | | A | test/scal/sscal/arch35/sscal_test.csv | 测试数据(22 用例) | | A | test/scal/sscal/sscal_golden.h | CPU golden 参考 | | A | test/scal/sscal/sscal_param.h | 测试参数结构 | ## 关联的Issue - https://gitcode.com/cann/ops-blas/issues/135 ## 测试 - gtest 框架,CSV 驱动,覆盖参数校验、基础功能、边界值、特殊值、非对齐长度 - CPU golden 参考实现精度比对(COMBINED 模式,abs_tol=1e-5, rel_tol=1e-5) - 编译命令:bash build.sh --ops=sscal --run --soc=ascend950 ## 文档更新 - blas/scal/sscal/README.md 已更新为 arch35 实现说明 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!136 | 14 天前 |