本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
add issue&PR template Co-authored-by: ZitaoWang<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !14 merge issue_pr_template into master add issue&PR template Created-by: wangzitao_leo Commit-by: ZitaoWang Merged-by: chen-shuai Description: Add issue & PR template of gitcode. See merge request: cann/ops-blas!14 | 5 个月前 | |
docs: 精度验证文档同步更新为 MIXED_TOLERANCE 策略 Co-authored-by: zhu-lei0614<zhulei113@huawei.com> # message auto-generated for no-merge-commit merge: !290 merge mixed_tolerance into master docs: 精度验证文档同步更新为 MIXED_TOLERANCE 策略 Created-by: iuyi Commit-by: zhu-lei0614 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> PR #283(commit 2a0ca68)引入了 MIXED_TOLERANCE 精度验证策略,对齐 opbase 开源精度标准。本次更新将以下文档和 Skill 文件从旧的 MERE_MARE 示例同步至新策略: - agent/skills/blas-ST-develop/SKILL.md §1.2 精度模式:推荐模式表改为 MIXED_TOLERANCE,代码示例改用 applyMixedTolerance(cfg, dtype, goldenPtr, count) 一行配置,删除 mereThreshold/mareMultiplier 手动设置示例及 param 字段扩展示例,新增 verifyInteger 模式说明 - agent/skills/blas-new-op-workflow/references/task-prompts.md:测试开发精度规则从 MERE_MARE / ABS / EXACT + CSV 列 mere_threshold/mare_multiplier 改为 applyMixedTolerance(浮点)/ EXACT(数据搬运)/ verifyInteger(索引) - docs/zh/develop/st_develop_guide.md:gbmv CSV 示例删除 mere_threshold,mare_multiplier 列,通用列定义表删除对应行,参考实现对照表 gbmv 精度标注改为 MIXED_TOLERANCE 旧 MERE_MARE 策略标注为"向后兼容,新代码不推荐使用"。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/317?ref=&did=4172207#tid-4172207 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 更新 agent/skills/blas-ST-develop/SKILL.md - 更新 agent/skills/blas-new-op-workflow/references/task-prompts.md - 更新 docs/zh/develop/st_develop_guide.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!290 | 1 个月前 | |
Feat: gemm batched with tensor api Co-authored-by: wang-zhiyue2<wangzhiyue2@huawei.com> # message auto-generated for no-merge-commit merge: !269 merge gemm_batched into master Feat: gemm batched with tensor api Created-by: wang-zhiyue2 Commit-by: wang-zhiyue2 Merged-by: cann-robot Description: ## 描述 添加gemm batched算子 ## 关联的Issue ## 测试 sgemm_batched共测试157个用例,1个硬编码用例,156个csv用例,157/157已全部通过。  cgemm_batched共测试166个用例,1个硬编码用例,165个csv用例,166/166已全部通过。  ## 文档更新 添加gemm batched的README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!269 | 1 个月前 | |
Fix: Handle 类型由 void* 改为前向声明结构体指针风格,对齐 cuBLAS/ROCm Co-authored-by: Zitao Wang<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !277 merge issue_110_258 into master Fix: Handle 类型由 void* 改为前向声明结构体指针风格,对齐 cuBLAS/ROCm Created-by: wangzitao_leo Commit-by: Zitao Wang Merged-by: cann-robot Description: ## 描述 将 aclblasHandle_t 和 aclblasLtHandle_t 从 void* 改为前向声明结构体指针(typedef struct _aclblas_handle* aclblasHandle_t),对齐 cuBLAS/ROCm 主流标准,获得编译期类型校验。Descriptor 类型此前已完成结构体指针化改造,本次仅涉及 Handle。清理了所有冗余的 reinterpret_cast 和 trivial 辅助函数。 ### 改动范围 **核心改动(2 个公开头文件):** - include/cann_ops_blas.h:typedef void* aclblasHandle_t → typedef struct _aclblas_handle* aclblasHandle_t - include/cann_ops_blasLt.h:typedef void* aclblasLtHandle_t → typedef struct aclblasLtHandle* aclblasLtHandle_t **清理改动(90 个文件):** - 删除 3 个 trivial 辅助函数(ToInternalHandle、ToInternal x2) - 移除 92 处 reinterpret_cast<_aclblas_handle*>(handle) → 直接用 handle - 移除 3 处 reinterpret_cast<aclblasLtHandle*>(lightHandle) → 直接用 lightHandle - 移除 2 处反向 cast(reinterpret_cast<void*>(h) / reinterpret_cast<aclblasLtHandle_t>(h))→ 直接赋值 - 更新 1 处过时注释 ### ABI 兼容性 指针的二进制表示不变,无 ABI 破坏。 ## 关联的Issue [#110](https://gitcode.com/cann/ops-blas/issues/110) ## 测试 所有 host 侧目标文件(80+ 算子 host、aclblas_auxiliary、blasLt API)零错误编译通过;grep 确认零遗留 reinterpret_cast 和 ToInternalHandle/ToInternal;ABI 无破坏(指针二进制表示不变)。 ## 文档更新 无需文档更新,API 签名不变。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!277 | 1 个月前 | |
Feat: gemm batched with tensor api Co-authored-by: wang-zhiyue2<wangzhiyue2@huawei.com> # message auto-generated for no-merge-commit merge: !269 merge gemm_batched into master Feat: gemm batched with tensor api Created-by: wang-zhiyue2 Commit-by: wang-zhiyue2 Merged-by: cann-robot Description: ## 描述 添加gemm batched算子 ## 关联的Issue ## 测试 sgemm_batched共测试157个用例,1个硬编码用例,156个csv用例,157/157已全部通过。  cgemm_batched共测试166个用例,1个硬编码用例,165个csv用例,166/166已全部通过。  ## 文档更新 添加gemm batched的README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!269 | 1 个月前 | |
docs: 精度验证文档同步更新为 MIXED_TOLERANCE 策略 Co-authored-by: zhu-lei0614<zhulei113@huawei.com> # message auto-generated for no-merge-commit merge: !290 merge mixed_tolerance into master docs: 精度验证文档同步更新为 MIXED_TOLERANCE 策略 Created-by: iuyi Commit-by: zhu-lei0614 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> PR #283(commit 2a0ca68)引入了 MIXED_TOLERANCE 精度验证策略,对齐 opbase 开源精度标准。本次更新将以下文档和 Skill 文件从旧的 MERE_MARE 示例同步至新策略: - agent/skills/blas-ST-develop/SKILL.md §1.2 精度模式:推荐模式表改为 MIXED_TOLERANCE,代码示例改用 applyMixedTolerance(cfg, dtype, goldenPtr, count) 一行配置,删除 mereThreshold/mareMultiplier 手动设置示例及 param 字段扩展示例,新增 verifyInteger 模式说明 - agent/skills/blas-new-op-workflow/references/task-prompts.md:测试开发精度规则从 MERE_MARE / ABS / EXACT + CSV 列 mere_threshold/mare_multiplier 改为 applyMixedTolerance(浮点)/ EXACT(数据搬运)/ verifyInteger(索引) - docs/zh/develop/st_develop_guide.md:gbmv CSV 示例删除 mere_threshold,mare_multiplier 列,通用列定义表删除对应行,参考实现对照表 gbmv 精度标注改为 MIXED_TOLERANCE 旧 MERE_MARE 策略标注为"向后兼容,新代码不推荐使用"。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/317?ref=&did=4172207#tid-4172207 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 更新 agent/skills/blas-ST-develop/SKILL.md - 更新 agent/skills/blas-new-op-workflow/references/task-prompts.md - 更新 docs/zh/develop/st_develop_guide.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!290 | 1 个月前 | |
chore: 补充3个文件的CANN许可证头 | 30 天前 | |
Feat: gemm batched with tensor api Co-authored-by: wang-zhiyue2<wangzhiyue2@huawei.com> # message auto-generated for no-merge-commit merge: !269 merge gemm_batched into master Feat: gemm batched with tensor api Created-by: wang-zhiyue2 Commit-by: wang-zhiyue2 Merged-by: cann-robot Description: ## 描述 添加gemm batched算子 ## 关联的Issue ## 测试 sgemm_batched共测试157个用例,1个硬编码用例,156个csv用例,157/157已全部通过。  cgemm_batched共测试166个用例,1个硬编码用例,165个csv用例,166/166已全部通过。  ## 文档更新 添加gemm batched的README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!269 | 1 个月前 | |
Feat: 新增面向arch35的aclblasGemmEx接口 Co-authored-by: developer<developer@opencode.ai> Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !169 merge aclblasGemmEx into master Feat: 新增面向arch35的aclblasGemmEx接口 Created-by: yang-di52 Commit-by: yang-di52;developer Merged-by: cann-robot Description: ## 描述 新增 aclblasGemmEx 接口,实现通用矩阵乘法扩展(GEMM Ex),面向 arch35 (DAV_3510) 架构。 **支持的数据类型组合**: | 计算类型 | Scale 类型 | A/B 类型 | C 类型 | |---------|-----------|---------|--------| | ACLBLAS_COMPUTE_16F | ACL_FLOAT16 | ACL_FLOAT16 | ACL_FLOAT16 | | ACLBLAS_COMPUTE_32F | ACL_FLOAT | ACL_BF16 | ACL_BF16 | | ACLBLAS_COMPUTE_32F | ACL_FLOAT | ACL_FLOAT16 | ACL_FLOAT16 | | ACLBLAS_COMPUTE_32F | ACL_FLOAT | ACL_FLOAT | ACL_FLOAT | | ACLBLAS_COMPUTE_32F (FP8) | ACL_FLOAT | ACL_FLOAT8_E4M3FN | ACL_FLOAT16 | | ACLBLAS_COMPUTE_32F (FP8) | ACL_FLOAT | ACL_FLOAT8_E5M2 | ACL_FLOAT16 | ## 关联的Issue [#159](https://gitcode.com/cann/ops-blas/issues/159) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!169 | 2 个月前 | |
feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !287 merge feat/mixed-tolerance-adapt into master feat(test): 适配7个算子使用MIXED_TOLERANCE混合容差精度验证 Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 将 7 个算子的精度验证方式从旧精度模式( MERE_MARE/REL)迁移至 MIXED_TOLERANCE 混合容差方案。 ### 变更原因 PR #283 引入了 applyMixedTolerance API,提供了更合理的混合容差精度验证机制。为保持测试框架的一致性,需要将存量算子的精度验证方式统一迁移至该方案。 ### 变更方法 对以下 7 个算子的测试文件进行迁移: - sdot(PR #89) - sger(PR #137) - sspr(PR #164) - sspr2(PR #202) - stbsv(PR #218) - snrm2_ex(PR #231) - gemv_strided_batched(PR #250) 每个算子的改动为:测试文件中将旧精度模式替换为调用 applyMixedTolerance API。 共计 7 个测试文件变更,16 行新增,34 行删除。README 不涉及变更(精度验证策略属于测试内部实现,不写入面向使用者的算子 README)。 ## 关联的Issue [#315](https://gitcode.com/cann/ops-blas/issues/315) ## 测试 - 执行所有 7 个算子的单元测试,共 303 个测试用例,全部通过 ## 文档更新 不涉及。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:测试框架迁移(将算子精度验证统一迁移至 MIXED_TOLERANCE 方案) See merge request: cann/ops-blas!287 | 1 个月前 | |
Docs:更新README、版本配套等文档信息 Co-authored-by: wangzitao_leo<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !49 merge docs_0512 into master Docs:更新README、版本配套等文档信息 Created-by: wangzitao_leo Commit-by: wangzitao_leo Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 重构 README.md 结构并新增版本配套信息,将旧版"WebIDE"统一更名为"CANNLab",新增 dir_structure.md 详细说明项目目录结构,重新编排 quick_install.md 的安装流程(先安装软件再安装依赖,并将源码下载步骤内嵌到依赖安装环节),同时引入 .clang-format 和 .pre-commit-config.yaml 以规范化 C/C++ 代码风格 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#26](https://gitcode.com/cann/ops-blas/issues/26) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了README.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!49 | 3 个月前 | |
refactor(agent): 规范 Agent 工作流算子代码模板 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !174 merge agent_workflow_fix into master refactor(agent): 规范 Agent 工作流算子代码模板 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 Agent 工作流文档与代码模板整改,共 25 个文件变更(+689/-313)。 ### 提交概览 1. **feat: 集成 OAT 自动化扫描 + 对齐 golden 测试规范** - 新增 scripts/oat_check.sh 自动化合规扫描脚本(License 头 + 文件类型检查) - 代码检视(3.1 / 4.2)前强制执行 diff 预检与 OAT 扫描 - 新增 oat_reports/ 到 .gitignore - golden.h 输出描述补充 CBLAS/LAPACK 调用说明,统一验收标准缩进格式 2. **refactor: 固化异步 kernel + const ref tiling + handle workspace** - kernel 采用异步 launch:launch 后直接返回,不调用 aclrtSynchronizeStream - Tiling 数据以 const TilingData& 从 host 传入 kernel_do,kernel 函数以 by value 接收,去掉 aclrtMalloc/aclrtMemcpy(H2D) 传递 tiling - workspace 由 handle 统一管理(aclblasGetEffectiveWorkspace(h)),禁止算子内自行 aclrtMalloc 分配 - 更新 3 套 host/kernel 代码模板、日志模板、开发指南、代码检视验收标准 3. **refactor: 固化新算子结构(2 层目录 + kernel.h + host 拆分 + 强制 dlog)** - 新算子目录改为 2 层结构:blas/{op}/archXX/(去掉 {family}/ 中间层),测试目录同步为 test/{op}/ - 每个算子新增独立 {op}_kernel.h 头文件,统一 host/kernel 共用,禁止 host.cpp 中写 extern 前向声明 - host.cpp 强制拆分为 Validate{Op}Params + Launch{Op}Kernel 两个静态函数,API 入口只做调度 - host.cpp 强制集成 dlog 日志(log/log.h),使用 OP_LOGE/D/I,禁止 printf/cout - 模板文件物理目录迁移:blas/{family}/{op}/archXX/ → blas/{op}/archXX/ - 5 处文档中 kernel.h 描述与实现对齐 4. **feat(agent): Issue 创建时新增指派人问卷** - 新增 questionnaire-issue-assignee.md 问卷定义:单独创建 Issue 时询问用户是否 assign 给自己;提 PR 同步创建 Issue 则默认 assign 给当前用户 - 更新 SKILL.md:新增指派人步骤到提交 Issue 流程 - 更新 batch_create_issues.sh:新增可选 assignee 参数 5. **refactor(agent): 强化模板规范(PR #178 冗余清理 + 代码检视 HIGH 规则 + CSV 显式规范)** - 删除 3 个 host 模板的冗余 include(acl/acl.h、cann_ops_blas_common.h、tiling/platform/platform_ascendc.h) - host 模板删除本地 static GetAivCoreCount,改用 host_utils.h 公共版本 - GetAivCoreCount 失败统一为 OP_LOGE("aclblas{Op}", "GetAivCoreCount failed") + ACLBLAS_STATUS_INTERNAL_ERROR - 3 个 kernel.h 数据指针参数强制用 GM_ADDR(与 kernel.cpp 签名一致),禁止 uint8_t* - simt kernel 入口补充 extern "C",与 simd-membase/regbase 对齐 - 新增 reviewer 强检视规则 6 + SKILL.md 硬规则 11-13(host/kernel 模板合规性检查) - 新增完整 npu_wrapper 模板(含 ACL 返回值校验 + 失败时清理已分配内存) - 新增 PrecisionMode 配置表(5 种算子类型)+ 代码示例 - CSV 随机值范围强制显式指定:RANDOM_1_3 / RANDOM_NORM_1E6 / RANDOM_LOWER_0.5_2.0,禁止仅写 RANDOM 依赖默认范围 - task-prompts 2.x.1.B 验收标准新增:CSV 随机范围显式指定 + 精度模式显式指定 + npu_wrapper 完整封装 ## 关联的Issue 关联 Issue [#165](https://gitcode.com/cann/ops-blas/issues/165) ## 测试 Reviewer 工作流一致性检视全部通过(12/12 PASS,0 WARNING,0 HIGH): - 2 层目录一致性、kernel.h 落地一致性 - host 拆分一致性、dlog 集成一致性、命名一致性 - GetAivCoreCount 公共版本、错误信息统一 - kernel.h GM_ADDR、simt extern "C" - reviewer 规则 6 ↔ SKILL.md 规则 11-13 ↔ task-prompts 验收标准 三处交叉一致 - npu_wrapper 模板全流程返回值校验覆盖 - PrecisionMode 配置表、CSV 随机范围强制声明 ## 文档更新 Agent 工作流相关文档全面更新,主要涵盖: - agent/skills/blas-new-op-workflow/SKILL.md:新增硬规则 5/6/7/8/9/10/11/12/13 - agent/skills/blas-new-op-workflow/references/task-prompts.md:输出路径与验收标准更新(2.x.1.A/2.x.1.B 新增多条强制约束) - agent/skills/blas-new-op-workflow/references/data-flow.md:路径更新为 2 层 - agent/skills/blas-op-templates/SKILL.md:目录树与命名规范更新 - agent/agents/{developer,tester,reviewer}.md:工程结构、路径白名单、代码规范更新(reviewer.md 新增规则 6) - 3 套代码模板(simd-membase / simd-regbase / simt):host/kernel/kernel.h/tiling_data.h 全部重写 + 冗余清理 - agent/skills/blas-log/references/host-log-templates.md / log-quickref.md:workspace 与日志模板更新 - scripts/oat_check.sh:新增 OAT 自动化扫描脚本 - agent/skills/gitcode-pr-issue-guide/SKILL.md:新增 Issue 指派人步骤 - agent/skills/gitcode-pr-issue-guide/assets/questionnaire-issue-assignee.md:新增问卷定义 - agent/skills/gitcode-pr-issue-guide/scripts/batch_create_issues.sh:新增 assignee 参数支持 - agent/skills/blas-ST-develop/SKILL.md:新增完整 npu_wrapper 模板 + PrecisionMode 配置表 + CSV 随机范围强制 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 See merge request: cann/ops-blas!174 | 2 个月前 | |
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 | 2 个月前 | |
Feat:add aclblasLtMatmulAlgo init/configSetAttr/configGetAttr func Co-authored-by: Zitao Wang<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !248 merge lt_algo_config into master Feat:add aclblasLtMatmulAlgo init/configSetAttr/configGetAttr func Created-by: wangzitao_leo Commit-by: Zitao Wang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 新增接口:此 PR 主要为 aclBLASLt 库新增了 aclblasLtMatmulAlgoInit、aclblasLtMatmulAlgoConfigSetAttribute、aclblasLtMatmulAlgoConfigGetAttribute 三个接口函数,用于算法结构的初始化与配置属性的读写。同时新增了 aclblasLtMatmulDescInit 函数,提供调用者自行分配内存的 matmul 描述符初始化路径。为支持这些接口,头文件中引入了 aclblasLtMatmulTile、aclblasLtMatmulStages、aclblasLtReductionScheme、aclblasLtMatmulAlgoConfigAttributes 等枚举类型,并提取了 InitMatmulDescCapsule 公共函数,重构了原有的 aclblasLtMatmulDescCreate。 2. blasLt目录重构 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#260](https://gitcode.com/cann/ops-blas/issues/260) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> bash build.sh --ops=blasLtMatmul,blasLtMatrixTransform --soc=ascend950 --run  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 1. blasLt/README.md 2. blasLt/matrix_transform/README.md 3. docs/zh/api_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:blasLt重构 See merge request: cann/ops-blas!248 | 1 个月前 | |
Docs:rectify api_list.md Co-authored-by: wangzitao_leo<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !217 merge op_api_list into master Docs:rectify api_list.md Created-by: wangzitao_leo Commit-by: wangzitao_leo Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> rectify api_list.md ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#219](https://gitcode.com/cann/ops-blas/issues/219) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> api_list.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!217 | 2 个月前 | |
add OAT & LICENSE & SECURITY rules Co-authored-by: ZitaoWang<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !16 merge OAT_LICENSE_SECURITY into master add OAT & LICENSE & SECURITY rules Created-by: wangzitao_leo Commit-by: ZitaoWang Merged-by: chen-shuai Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 添加ops-blas仓的OAT & LICENSE & SECURITY规则配置。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#3](https://gitcode.com/cann/ops-blas/issues/3) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增OAT.xml、LICENSE、SECURITY.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!16 | 5 个月前 | |
Fix:rectify OAT rule 过滤 csv 测试用例文件 Co-authored-by: Zitao Wang<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !242 merge rectify_OAT into master Fix:rectify OAT rule 过滤 csv 测试用例文件 Created-by: wangzitao_leo Commit-by: Zitao Wang Merged-by: cann-robot Description: ## 描述 修改 OAT.xml,为 defaultPolicyFilter 增加 *.csv 文件过滤规则,并为 license policyitem 指定 filefilter=defaultPolicyFilter,使 csv 测试用例文件不再被 codecheck 拦截,无需手动屏蔽。 ## 关联的Issue [#257](https://gitcode.com/cann/ops-blas/issues/257) ## 测试 本地确认 OAT.xml 语法正确,过滤规则生效。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!242 | 2 个月前 | |
Docs:add latest news of June Co-authored-by: Zitao Wang<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !212 merge docs_0625 into master Docs:add latest news of June Created-by: wangzitao_leo Commit-by: Zitao Wang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 更新latest news六月内容 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> Issue [#218](https://gitcode.com/cann/ops-blas/issues/218) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!212 | 2 个月前 | |
add OAT & LICENSE & SECURITY rules Co-authored-by: ZitaoWang<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !16 merge OAT_LICENSE_SECURITY into master add OAT & LICENSE & SECURITY rules Created-by: wangzitao_leo Commit-by: ZitaoWang Merged-by: chen-shuai Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 添加ops-blas仓的OAT & LICENSE & SECURITY规则配置。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#3](https://gitcode.com/cann/ops-blas/issues/3) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 新增OAT.xml、LICENSE、SECURITY.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!16 | 5 个月前 | |
Feat: 新增面向arch35的aclblasSspr接口 Co-authored-by: yuyuanfeng<yuyuanfeng1@huawei.com> # message auto-generated for no-merge-commit merge: !164 merge master into master Feat: 新增面向arch35的aclblasSspr接口 Created-by: yuyuanfeng Commit-by: yuyuanfeng Merged-by: cann-robot Description: ## 描述 新增 BLAS Level-2 算子 aclblasSpr 的 arch35 (Ascend 950) 实现。 该算子执行对称矩阵 rank-1 更新:A := alpha * x * x^T + A,数据以 packed 格式存储(列优先),支持 UPPER/LOWER 两种填充模式。 采用双路径架构: - UB-x 快速路径:incx==1 且 128<=n<=8192 时,将 x 向量缓存到 UB,多核按列切分 - GM 回退路径:incx!=1 或 n 超出 UB 容量时,直接从 GM 读写 ## 关联的Issue [#153](https://gitcode.com/cann/ops-blas/issues/153) ## 测试 - Host 参数校验:9 个用例全部通过 - Kernel 计算:16 个用例(覆盖 n=1/4/64/10000、UPPER/LOWER、正/负 incx、UB-x/GM 路径) - 910 全量编译通过,不影响已有算子 ## 文档更新 新增 blas/spr/README.md ## 其他改动 - build.sh / cmake/test.cmake / test/CMakeLists.txt:增加扁平目录结构(无类型子目录)的算子发现与测试构建支持 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!164 | 2 个月前 | |
fix: install_deps.sh 支持 multiarch 路径检测 cblas.h Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !168 merge fix/install-deps-multiarch into master fix: install_deps.sh 支持 multiarch 路径检测 cblas.h Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 修复 install_deps.sh 在 Ubuntu 24.04 等使用 multiarch 路径的系统上无法检测到已安装的 BLAS/LAPACK 的问题。 **根因**:Ubuntu 24.04 的 libblas-dev 将 cblas.h 安装在 /usr/include/x86_64-linux-gnu/cblas.h,但脚本只检查 /usr/include/cblas.h 和 /usr/local/include/cblas.h,导致检测失败并报错。 **修复方案**:新增 find_cblas_header() 函数,通过 dpkg-architecture -qDEB_HOST_MULTIARCH 获取 multiarch 路径,在以下位置查找 cblas.h: - /usr/include/cblas.h - /usr/local/include/cblas.h - ${HOMEBREW_PREFIX}/include/cblas.h(macOS) - /usr/include/<multiarch>/cblas.h(Debian/Ubuntu multiarch) 修复后脚本正确检测到已安装的 BLAS/LAPACK,不再重复执行 apt install。 ## 关联的Issue [#155](https://gitcode.com/cann/ops-blas/issues/155) ## 测试 在 Ubuntu 24.04 系统上执行 bash install_deps.sh,脚本正确检测到 /usr/include/x86_64-linux-gnu/cblas.h,所有依赖安装成功。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!168 | 2 个月前 | |
refine heuristic and kernel launch Co-authored-by: ZitaoWang<wangzitao4@huawei.com> # message auto-generated for no-merge-commit merge: !9 merge refine_blaslt_api into master refine heuristic and kernel launch Created-by: wangzitao_leo Commit-by: wangzitao_leo;ZitaoWang Merged-by: chen-shuai Description: refine heuristic and kernel launch api See merge request: cann/ops-blas!9 | 5 个月前 |
ops-blas
🔥Latest News
- [2026/06] blas 目录新增 Level-3 混合精度 GEMM 接口:aclblasGemmEx、aclblasGemmBatchedEx、aclblasSgemmGroupedBatched 等。补齐 A5 批量 LAPACK 求解链路:aclblasSgetrfBatched、aclblasSgetriBatched、aclblasSgelsBatched、aclblasSgetrsBatched 等。
- [2026/05] blas目录新增aclblasSgbmv、aclblasSsbmv、aclblasSspmv、aclblasStpsv等计算接口。
- [2026/03] ops-blas项目上线,提供BLAS计算的API以及现代灵活接口aclBLASLt。
🚀概述
ops-blas是CANN (Compute Architecture for Neural Networks)算子库中提供高性能线性代数计算以及轻量化GEMM调用的算子库。
🛠️环境准备
环境部署是体验本项目能力的前提,请先完成NPU驱动、CANN包安装等,确保环境正常。
⬇️源码下载
环境准备好后,下载与CANN版本配套的分支源码,命令如下,${tag_version}替换为分支标签名。
说明:若环境中已存在配套分支源码,可跳过本步骤,例如CANNLab默认已提供最新商发版CANN对应的源码。
git clone -b ${tag_version} https://gitcode.com/cann/ops-blas.git
说明:对于CANNLab云开发环境,已默认提供最新商发CANN版本配套的源码,如需获取其他版本源码,参考上述命令获取。
📖学习教程
- 快速入门:从零开始快速体验项目核心基础能力,涵盖源码编译、算子调用、开发与调试等操作。
💬相关信息
🤝联系我们
本项目功能和文档正在持续更新和完善中,建议您关注最新版本。