| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 个月前 |