| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
refactor: 统一头文件 include guard 为 #pragma once 并添加 CI lint 规则 Co-authored-by: Zhang Hua<1302896824@qq.com> # message auto-generated for no-merge-commit merge: !173 merge unify-include-guards into master refactor: 统一头文件 include guard 为 #pragma once 并添加 CI lint 规则 Created-by: zhanghua145 Commit-by: Zhang Hua Merged-by: cann-robot Description: ## 描述 统一仓库中所有头文件的 include guard 风格为 #pragma once,解决当前 #ifndef/#define/#endif 与 #pragma once 混用导致的风格不一致问题。 ## 关联 Issue 关联 Issue #162 ## 变更内容 ### 1. 统一现有头文件(125 个文件,+456/-698) | 类别 | 数量 | 说明 | |------|------|------| | #ifndef → #pragma once | 215 个 | 传统宏保护替换为 #pragma once | | 补充 #pragma once | 1 个 | cgerc_kernel_impl.h 原先缺少 include guard | | agent 模板同步 | 2 个 | 模板文件同步转换 | | **净减少行数** | **242 行** | 456 行增加,698 行删除 | ### 2. 添加 CI lint 检查脚本 新增 scripts/ci/check_pragma_once.sh,用于检查 PR 中新增/修改的 .h/.hpp 文件是否使用 #pragma once。 **调用方式**(与现有 scripts/ci/run_example.sh 一致,接收 PR 文件列表): bash bash scripts/ci/check_pragma_once.sh <pr_filelist.txt> pr_filelist.txt 格式为每行一个文件路径(相对仓库根目录),仅检查 .h/.hpp 文件,其他文件类型自动跳过。 **检查规则**: - 必须使用 #pragma once,拒绝 #ifndef include guard 和无 guard 的文件 - 自动跳过第三方目录(.opencode/、asc-devkit/ 等) ## ⚠️ 需要维护者操作:接入 CI 流水线 本 PR 提供了 scripts/ci/check_pragma_once.sh 检查脚本,但**尚未接入 CI 流水线**。需要维护者在 GitCode 平台侧的流水线配置中新增一个步骤,在编译前调用该脚本。 建议的接入方式(参考现有 run_example.sh 的调用模式): yaml # CI 流水线中新增 lint 步骤(在编译步骤之前) - name: check-pragma-once script: | # pr_filelist.txt 由平台自动生成,包含 PR 变更文件列表 bash scripts/ci/check_pragma_once.sh pr_filelist.txt 在维护者接入流水线之前,该脚本也可通过以下方式手动使用: - **本地验证**:bash scripts/ci/check_pragma_once.sh <文件列表> - **pre-commit hook**:已集成到 .pre-commit-config.yaml(需开发者自行安装 pre-commit) ## 关于 Issue 中提到的 3 个缺少 guard 的头文件 Issue #162 提到有 3 个头文件缺少标准 include guard。经逐 commit 追溯历史,原始 3 个文件为: | # | 文件 | 当前状态 | |---|------|----------| | 1 | blas/gerc/cgerc/arch22/cgerc_kernel_impl.h | 仍存在,**本次已修复** | | 2 | blas/cgerc/cgerc_kernel_impl.h | 已被删除(cgerc 目录重构,迁移至 blas/gerc/cgerc/arch22/) | | 3 | blas/common/kernel_launch/aclblas_kernel_do.h | 已被删除(commit cc4d43c "del common kernel launch header") | 第 2、3 个文件已在其他 PR 的重构过程中被删除,因此本次只需修复第 1 个文件。 ## 未修改的 #ifndef 仓库中剩余约 114 处 #ifndef 均为**条件编译**(非 include guard),保持不变: - #ifndef __CCE_AICORE__ — 区分 Host/Device 编译目标 - #ifndef TEST_DEVICE_ID — 测试设备 ID 默认值 - #ifndef __force_inline__ — 编译器特性检测 - #ifndef ACLBLAS_OPERATION_DECLARED — 枚举声明保护 这些是功能性的编译条件判断,不属于 include guard,不在本次修改范围内。 ## 验证 - [x] 测试通过(bash build.sh --run --soc=ascend950,ops_blas + ops_blasLt 均成功)  - [x] 所有项目头文件(358 个)均已使用 #pragma once - [x] 无遗漏的 include guard 宏 - [x] CI lint 脚本测试通过(正确拒绝 #ifndef guard,放行 #pragma once,仅检查 PR 变更文件) ## 类型标签 - [ ] Bug 修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他:代码风格统一重构 See merge request: cann/ops-blas!173 | 11 天前 | |
refactor: sscal test适配测试框架 Co-authored-by: zhu-lei0614<zhulei113@huawei.com> # message auto-generated for no-merge-commit merge: !145 merge master into master refactor: sscal test适配测试框架 Created-by: chensi79 Commit-by: zhu-lei0614 Merged-by: cann-robot Description: ## 描述 1、将 arch35 sscal kernel 的调用接口从公共文件转移到该算子目录下,同时重构 sscal 测试以适配统一的 CSV-driven 测试框架。 2、fix-bug: 增加 _OPS_BLAS_ADDED_DIRS 列表去重,防止同一目录被多次 add_subdirectory ### 改动原因 1. sscal kernel 存在两种调用接口(by-value 和 GM pointer),增加维护成本和调用复杂度,统一为 GM pointer 方式可简化调用链路 2. 原测试用例使用自定义 MakeSscalInput 和 xFill/xDesc 字段,与新测试框架的 BlasFillMode/parseFill 不兼容 3. CMake 构建和 CI 脚本存在重复目录/算子问题。run_exmple.sh中按修改文件提取算子名,不做去重。若同一个算子改了3个测试相关文件,算子名被加入3次,导致TEST_NAME="sscal,sscal,sscal".CMake对同一source directory调用两次add_subdirectory报错 binary directory already used ### 改动方法 - 删除 aclblas_kernel_do.h 中 arch35-style by-value 的 sscal_kernel_do 声明及 SscalTilingData 前置声明,仅保留 GM pointer 版本 - 将 by-value 声明移至 sscal_tiling_data.h 作为内部接口,与 tiling 结构体定义紧耦合 - 重写 sscal_test.cpp:用 TEST_P(SscalArch35Test, CsvDriven) 替代旧的辅助函数,直接通过 GetParam() 解析 CSV 参数,调用 aclblasSscal_npu 并用 Verifier::verifyVector 对比 CPU golden 结果 - 更新 sscal_param.h:字段从 xFill/xDesc 改为 BlasFillMode x,引入 parseFill 和 fill.h - 更新 sscal_test.csv:字段从 x_fill,x_desc,random_seed 简化为 x,random_seed,填充值从字符串改为枚举标识 - CMakeLists.txt:增加 _OPS_BLAS_ADDED_DIRS 列表去重,防止同一目录被多次 add_subdirectory - run_example.sh:增加 bash 去重逻辑,确保 ops 数组无重复项 ## 关联的Issue - #146 ## 测试 - 通过更新后的 CSV-driven 测试框架运行所有 sscal 测试用例(L0/L1/L2 共 43 条) - 验证边界场景:x=null、n=0/n<0、incx=0、负步长、NaN/Inf/极端值输入 - 验证构建系统去重:确保同一测试目录不被重复 add ## 文档更新 无文档更新 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:重构 See merge request: cann/ops-blas!145 | 18 天前 | |
fix(scal): sscal/scalex 在 incx<=0 时按 no-op 返回 SUCCESS,对齐参考 BLAS Co-authored-by: chensi79@huawei.com<chensi79@huawei.com> # message auto-generated for no-merge-commit merge: !214 merge master into master fix(scal): sscal/scalex 在 incx<=0 时按 no-op 返回 SUCCESS,对齐参考 BLAS Created-by: chensi79 Commit-by: chensi79@huawei.com Merged-by: cann-robot Description: ## 描述 修复 aclblasSscal / aclblasScalex 在 incx <= 0 时的处理:原先返回 ACLBLAS_STATUS_INVALID_VALUE,对齐参考 BLAS(cblas_sscal 的 IF (INCX.LE.0) RETURN)的语义,改为 no-op 直接返回 ACLBLAS_STATUS_SUCCESS,不修改 x。 ## 改动原因 Daily-QA(#213)监测到 ascend950 全量测试中 sscal 与 scalex 失败。根因:测试集覆盖了 incx=0 的边界用例,而当前实现把 incx == 0 当作非法参数直接报错,与参考 BLAS 语义不一致——参考实现中 incx <= 0 都是合法的 no-op。本次修复将语义对齐到参考实现,使 incx <= 0 用例能正常通过。 ## 改动方法 - **host**(sscal_host.cpp / scalex_host.cpp):从参数校验中移除 incx == 0 报错;在主入口提前短路,incx <= 0 直接返回 ACLBLAS_STATUS_SUCCESS。 - **kernel**(sscal_kernel.cpp / scalex_kernel.cpp / scalex_golden.h):因 incx <= 0 不再进入 kernel,移除 absInc / isReverse 反向步长逻辑,简化为单步长 stride = (uint32_t)incx。 - **test**: - sscal_test.csv TC_L0_05、scalex_test.csv TC_L0_03:期望从 INVALID_VALUE 改为 SUCCESS。 - sscal_golden.h / scalex_golden.h:参考实现同步移除 incx == 0 校验,scalex golden 增加 incx <= 0 短路。 - **docs**(scal/README.md / scalex/README.md):明确写出 incx <= 0 的 no-op 语义,引用参考 BLAS 的 IF (INCX.LE.0) RETURN;sscal README 同时修正函数原型(指针/整数类型与实际实现对齐)。 ## 关联的Issue - https://gitcode.com/cann/ops-blas/issues/213 ## 测试 - 修改对应单元测试用例(sscal_test.csv TC_L0_05、scalex_test.csv TC_L0_03):期望结果由 INVALID_VALUE 改为 SUCCESS,验证 incx <= 0 走 no-op 路径返回成功且不修改 x。 - golden 同步去掉 incx == 0 校验,与 device 实现保持一致。 ## 文档更新 - blas/scal/README.md:补充 incx <= 0 的 no-op 约束、修正函数原型;区分 arch35 / arch22 行为差异。 - blas/scalex/README.md:补充 incx <= 0 的 no-op 约束。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!214 | 1 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 11 天前 | ||
| 18 天前 | ||
| 1 天前 |