| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 18 天前 | |
Feat: 新增面向arch35的aclblasSgemv接口 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !103 merge aclblasSgemv into master Feat: 新增面向arch35的aclblasSgemv接口 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增 aclblasSgemv 接口,实现 BLAS Level 2 矩阵-向量运算 y = alpha * op(A) * x + beta * y(FP32),面向 Ascend950 (arch35 / DAV_3510) 平台,采用 SIMT 编程模型。 ### 算子功能 - 支持 trans = N / T / C 三种矩阵操作模式 - 支持任意正/负步长 incx / incy - Host 侧完整参数校验(handle nullptr、非法枚举、维度负值、lda 约束、步长零值、指针空值等) - m == 0 或 n == 0 时早返回,不启动 Kernel - Kernel 侧采用 SIMT(__simt_vf__ + grid-stride),GM/UB 双路径 dispatch:incx=1 时缓存 x 到 __ubuf__ 走 UB 路径,否则走 GM 路径 ### 交付物清单 **代码文件:** - blas/gemv/sgemv/arch35/sgemv_host.cpp — Host 侧参数校验与 Kernel 启动 - blas/gemv/sgemv/arch35/sgemv_kernel.cpp — SIMT Kernel 实现(SgemvNGm/SgemvTGm/SgemvNUb/SgemvTUb 双路径) - blas/gemv/sgemv/arch35/sgemv_tiling_data.h — Tiling 数据结构定义 - include/cann_ops_blas.h — 公共头文件(aclblasSgemv 接口声明) **测试文件:** - test/gemv/sgemv/sgemv_param.h — 测试参数结构体 - test/gemv/sgemv/sgemv_golden.h — CPU Golden 实现 - test/gemv/sgemv/arch35/sgemv_npu_wrapper.h — NPU 调用封装 - test/gemv/sgemv/arch35/sgemv_test.cpp — GTest 入口 - test/gemv/sgemv/arch35/sgemv_test.csv — 测试用例表(64 条) - test/gemv/sgemv/CMakeLists.txt — 测试构建配置 **文档文件:** - blas/gemv/sgemv/README.md — 算子 README ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联 Issue #93 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ### 精度测试(ST) | 指标 | 结果 | |------|------| | 总用例数 | 64(L0×14 + L1×35 + 异常×15) | | 通过率 | 100%(64/64) | | MERE 最大值 | 3×10⁻⁶(阈值 2⁻¹³ ≈ 1.22×10⁻⁴,仅占阈值 2.5%) | | MARE 最大值 | 6.27×10⁻⁴(阈值 10×2⁻¹³ ≈ 1.22×10⁻³,仅占阈值 51.4%) | | 异常用例 | 15/15 全部返回正确错误码 | 测试覆盖维度:trans 模式(N/T/C)、矩阵形状(方阵/矩形/单行/单列/1×1)、步长(正/负/非单位)、边界条件(m=0/n=0/alpha=0/beta=0)、大规模(512×512/1024×1024)、异常参数(nullptr/非法枚举/越界约束)。 ### 性能基线 | shape | trans | 耗时(us) | VEC% | Scalar% | |-------|-------|---------|------|---------| | 64×64 | N/T | 24.49 | 96.6% | 3.3% | | 512×512 | N/T | 180.70 | 99.6% | 0.3% | | 1024×1024 | N/T | 358.59 | 99.8% | 0.2% | SIMT 实现 VEC 利用率 96-99%,与仓内同类 Level-2 算子(ssymv/ssyr2)水平一致。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 新增 blas/gemv/sgemv/README.md:算子接口说明、参数规格、调用示例、编译运行步骤 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!103 | 1 个月前 | |
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 | 18 天前 | |
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 | 18 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 18 天前 | ||
| 1 个月前 | ||
| 18 天前 | ||
| 18 天前 |