本项目是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 个月前 | |
同步 cannbot-skills 安装脚本 Co-authored-by: iuyi<iuyi3093@qq.com> # message auto-generated for no-merge-commit merge: !338 merge agent-init into master 同步 cannbot-skills 安装脚本 Created-by: iuyi Commit-by: iuyi Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 同步 cannbot-skills 安装脚本 https://gitcode.com/cann/cannbot-skills/blob/9692a90e57801d98bdd49d273c160a0ac25212e2/plugins-community/cuda2ascend/example/init.sh ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!338 | 20 小时前 | |
fix(trmm/dgmm):arch35 aclblasStrmm/aclblasSdgmm 算子对齐 BLAS 标准 Co-authored-by: eternityk<taoyikun@huawei.com> # message auto-generated for no-merge-commit merge: !336 merge test into master fix(trmm/dgmm):arch35 aclblasStrmm/aclblasSdgmm 算子对齐 BLAS 标准 Created-by: eternityk Commit-by: eternityk Merged-by: cann-robot Description: ## 描述 arch35 平台的 aclblasStrmm 和 aclblasSdgmm 算子实现与 BLAS 标准存在偏差; ## 关联的Issue [#361](https://gitcode.com/cann/ops-blas/issues/361) ## 测试  ## 文档更新 更新了README.md文件。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!336 | 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(arch35): 新增 geam 算子,包含 aclblasSgeam 和 aclblasCgeam 接口 Co-authored-by: iuyi<202313350054@nuist.edu.cn> # message auto-generated for no-merge-commit merge: !328 merge feat/geam into master feat(arch35): 新增 geam 算子,包含 aclblasSgeam 和 aclblasCgeam 接口 Created-by: iuyi Commit-by: iuyi Merged-by: cann-robot Description: ## 描述 GEAM(General Matrix Add)执行带标量缩放的矩阵加法运算,支持对输入矩阵 A、B 分别施加可选的转置(Transpose)或共轭转置(ConjTrans)操作。数学定义为: txt C[i, j] = alpha * op(A)[i, j] + beta * op(B)[i, j], i ∈ [0, m), j ∈ [0, n) 其中 op(X) 根据转置参数取 X(NoTrans)、X^T(Trans)或 X^H(ConjTrans,仅复杂数有意义,浮点数等价于 Trans)。矩阵采用列主序(Column-Major)存储,X[i, j] 的物理地址为 X[i + j * ldX]。 本算子提供两个接口:aclblasSgeam(单精度浮点 float)与 aclblasCgeam(单精度复数 aclblasComplex),覆盖实数与复数两类矩阵加法场景。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 test/geam/ 下测试全部通过 ## 文档更新 blas/geam/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!328 | 6 天前 | |
Feat:新增面向arch35的aclblasGemmStridedBatchedEx接口 Co-authored-by: Xian_Yu-<3240106058@zju.edu.cn> # message auto-generated for no-merge-commit merge: !318 merge feat/gemm-strided-batched-ex into master Feat:新增面向arch35的aclblasGemmStridedBatchedEx接口 Created-by: Xian_Yu- Commit-by: Xian_Yu- Merged-by: cann-robot Description: ## 描述 新增 Ascend 950(arch35 / DAV-3510)的 aclblasGemmStridedBatchedEx 实现。 主要改动: - 设备端直接通过 base + batchIndex * stride 访问各批次矩阵,不生成 device pointer array。 - 支持列主序、OP_N/OP_T/OP_C、非紧凑及负 stride。 - 支持空矩阵、alpha==0、k==0、beta==0 等特殊执行路径。 - 实现 Cube直接输出、通用AIV epilogue及确定性Split-K归约。 - 实现ALGO0~7独立调度策略;非FP16类型当前支持DEFAULT/ALGO0。 - 增加地址、任务数及workspace溢出检查。 - 不调用或链接 gemm_batched_ex,实现代码独立维护。 支持的数据类型包括: - FP16×FP16→FP16/FP32 - BF16×BF16→BF16/FP32 - FP32×FP32→FP32 - INT8×INT8→INT32/FP32 - Complex FP32,包括真正的共轭转置 - FP8 E4M3/E5M2四种输入组合→FP16/FP32 - 对应的Pedantic及FP32 FAST模式 ## 关联的Issue 暂无。 ## 测试 在Ascend 950、arch35 / DAV-3510环境执行隔离构建及上板测试: bash bash test/gemm_strided_batched_ex/run_ascend950.sh \ --soc=ascend950 \ --device=0 验证内容包括: - 所有已支持的数据类型及compute type。 - NN、NT、TN、TT和Complex共轭转置。 - 非对齐M/N/K尾块。 - 空矩阵、alpha/beta典型组合及A/B/C免读语义。 - 非紧凑stride、负stride、ldc padding及batch gap。 - batch大于核数场景。 - ALGO0~7调度及显式算法不替换。 - Split-K、workspace不足和地址溢出。 - 空指针、非法参数、零stride及不支持组合。 - guard zone、padding和batch gap越界检查。 测试结果: - 隔离动态库及测试程序构建成功。 - 共执行82项测试,**82/82全部通过**。 - 整数结果0处不匹配,浮点结果均满足精度阈值。 - 性能冒烟:M=N=K=256,batch=4,平均约 90.21 μs,约 1.49 TFLOPS。 ## 文档更新 更新了 blas/gemm_strided_batched_ex/README.md,补充接口说明、数据类型支持矩阵、算法能力、参数限制及构建测试方法。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!318 | 1 天前 | |
Feat: 新增 TrsmBatched(StrsmBatched / CtrsmBatched)批量三角求解算子 Co-authored-by: jingdemeng<2683927616@qq.com> # message auto-generated for no-merge-commit merge: !243 merge master into master Feat: 新增 TrsmBatched(StrsmBatched / CtrsmBatched)批量三角求解算子 Created-by: jingdemeng Commit-by: jingdemeng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 精度测试 复数  实数  性能测试 复数  实数  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!243 | 11 天前 | |
fix(complex): 统一复数 BLAS 算子接口对齐 BLAS 标准(issues #61-#75) Co-authored-by: 2301_82146483<2556943601@qq.com> # message auto-generated for no-merge-commit merge: !316 merge fix/complex-blas-interface-alignment into master fix(complex): 统一复数 BLAS 算子接口对齐 BLAS 标准(issues #61-#75) Created-by: 2301_82146483 Commit-by: 2301_82146483 Merged-by: cann-robot Description: ## 关联 Issues Closes #61, #62, #63, #64, #65, #66, #67, #68, #69, #70, #71, #72, #75 ## 背景 仓库中复数 BLAS 算子接口以及少数实数BLAS算子接口与标准BLAS算子存在三类风格差异: 1. 维度参数使用 int64_t 而非 int 2. 标量 alpha/beta/c/s 按值传递而非指针传递 3. 只读输入指针缺少 const 修饰 此外 aclblasCcopy 参数顺序为 (x, y, n, incx, incy),与 BLAS 标准和同库 aclblasScopy 的 (n, x, incx, y, incy) 不一致。 ## 本次 PR 内容 ### 三类风格统一 将 15 个算子的接口签名对齐到与标准浮点算子一致: | 改动类型 | 说明 | |---|---| | int64_t → int | n/m/incx/incy/lda/batchCount 等维度参数统一为 int | | 按值 → 指针 | const aclblasComplex alpha → const aclblasComplex* alpha;const float c, const float s → const float* c, const float* s | | 补 const | 只读输入指针 x/y/A 添加 const 修饰 | | 空指针检查 | 所有指针传递的标量参数(alpha/beta/c/s)在函数体开头添加 nullptr 检查 | | 溢出防护 | n * 2 表达式在乘法前加 static_cast 避免 int 溢出 | ### Ccopy 参数顺序修正 aclblasCcopy 参数顺序从 (handle, x, y, n, incx, incy) 修正为 (handle, n, x, incx, y, incy),与 BLAS 标准一致。 ### 涉及算子清单(15 个) | Issue | 算子 | 改动要点 | |---|---|---| | #61 | aclblasCaxpy | int64_t→int + alpha→指针 + const(x) + nullptr check | | #62 | aclblasCcopy | 参数顺序修正 + int64_t→int + const(x) | | #63 | aclblasCdotc | int64_t→int | | #64 | aclblasCdotu | int64_t→int | | #65 | aclblasCgemvBatched | int64_t→int + alpha/beta→指针 + const(A,x) + nullptr check | | #66 | aclblasCgemv | int64_t→int + alpha/beta→指针 + const(A,x) + nullptr check | | #67 | aclblasCgerc | int64_t→int + alpha→指针 + const(x,y) + nullptr check | | #68 | aclblasCscal | int64_t→int + alpha→指针 + nullptr check | | #69 | aclblasCsrot | int64_t→int + c/s→指针 + nullptr check | | #70 | aclblasCsscal | int64_t→int + alpha→指针 + nullptr check + 溢出防护 | | #71 | aclblasCswap | int64_t→int | | #72 | aclblasCtrmv | int64_t→int + const(A) | | #75 | aclblasScnrm2 | int64_t→int + const(x) + 溢出防护 | | — | aclblasSdot | int64_t→int(风格统一) | | — | aclblasSsymm | int64_t→int(风格统一) | ### 实现策略 - Host 实现内部通过 const_cast 桥接到 kernel_do 函数(接受 uint8_t*),**Kernel 二进制不变** - alpha/beta 解引用:alpha.real → alpha->real - 测试调用点:alpha → &alpha,局部变量 int64_t → int ## 测试结果 远端 Ascend 910B3(arch22)环境构建与测试(15 个算子全部通过): | 测试 | 结果 | |------|------| | caxpy | PASS | | cscal | PASS | | sscal | PASS | | csrot | PASS | | cswap | PASS | | cdot | PASS | | scopy | PASS | | snrm2 | PASS | | cgemv | PASS | | cgerc | PASS | | ctrmv | PASS | | cgemv_batched | PASS | | sdot | PASS | | ssymm | PASS | See merge request: cann/ops-blas!316 | 18 天前 | |
Feat:新增面向arch35的aclblasGemmStridedBatchedEx接口 Co-authored-by: Xian_Yu-<3240106058@zju.edu.cn> # message auto-generated for no-merge-commit merge: !318 merge feat/gemm-strided-batched-ex into master Feat:新增面向arch35的aclblasGemmStridedBatchedEx接口 Created-by: Xian_Yu- Commit-by: Xian_Yu- Merged-by: cann-robot Description: ## 描述 新增 Ascend 950(arch35 / DAV-3510)的 aclblasGemmStridedBatchedEx 实现。 主要改动: - 设备端直接通过 base + batchIndex * stride 访问各批次矩阵,不生成 device pointer array。 - 支持列主序、OP_N/OP_T/OP_C、非紧凑及负 stride。 - 支持空矩阵、alpha==0、k==0、beta==0 等特殊执行路径。 - 实现 Cube直接输出、通用AIV epilogue及确定性Split-K归约。 - 实现ALGO0~7独立调度策略;非FP16类型当前支持DEFAULT/ALGO0。 - 增加地址、任务数及workspace溢出检查。 - 不调用或链接 gemm_batched_ex,实现代码独立维护。 支持的数据类型包括: - FP16×FP16→FP16/FP32 - BF16×BF16→BF16/FP32 - FP32×FP32→FP32 - INT8×INT8→INT32/FP32 - Complex FP32,包括真正的共轭转置 - FP8 E4M3/E5M2四种输入组合→FP16/FP32 - 对应的Pedantic及FP32 FAST模式 ## 关联的Issue 暂无。 ## 测试 在Ascend 950、arch35 / DAV-3510环境执行隔离构建及上板测试: bash bash test/gemm_strided_batched_ex/run_ascend950.sh \ --soc=ascend950 \ --device=0 验证内容包括: - 所有已支持的数据类型及compute type。 - NN、NT、TN、TT和Complex共轭转置。 - 非对齐M/N/K尾块。 - 空矩阵、alpha/beta典型组合及A/B/C免读语义。 - 非紧凑stride、负stride、ldc padding及batch gap。 - batch大于核数场景。 - ALGO0~7调度及显式算法不替换。 - Split-K、workspace不足和地址溢出。 - 空指针、非法参数、零stride及不支持组合。 - guard zone、padding和batch gap越界检查。 测试结果: - 隔离动态库及测试程序构建成功。 - 共执行82项测试,**82/82全部通过**。 - 整数结果0处不匹配,浮点结果均满足精度阈值。 - 性能冒烟:M=N=K=256,batch=4,平均约 90.21 μs,约 1.49 TFLOPS。 ## 文档更新 更新了 blas/gemm_strided_batched_ex/README.md,补充接口说明、数据类型支持矩阵、算法能力、参数限制及构建测试方法。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!318 | 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 | 1 个月前 | |
fix(trmm/dgmm):arch35 aclblasStrmm/aclblasSdgmm 算子对齐 BLAS 标准 Co-authored-by: eternityk<taoyikun@huawei.com> # message auto-generated for no-merge-commit merge: !336 merge test into master fix(trmm/dgmm):arch35 aclblasStrmm/aclblasSdgmm 算子对齐 BLAS 标准 Created-by: eternityk Commit-by: eternityk Merged-by: cann-robot Description: ## 描述 arch35 平台的 aclblasStrmm 和 aclblasSdgmm 算子实现与 BLAS 标准存在偏差; ## 关联的Issue [#361](https://gitcode.com/cann/ops-blas/issues/361) ## 测试  ## 文档更新 更新了README.md文件。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!336 | 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 个月前 | |
本次更新整合了以下改进: ## 核心改进 ### 1. 重构 init.sh 为派生构造函数(536行→285行) - 删除与插件重复的逻辑(skills/agents/asc-devkit/cann-samples) - 极简 3 步流程:创建 config → 准备 cannbot-skills → 调用插件 init - 插件负责实际初始化,子仓只做必要准备 - 支持 --cannbot 本地路径绑定,适配不同 cannbot-skills 版本 ### 2. 重构 agent/skills 适配新工作流分类 - 删除旧版算子开发工作流(blas-*-workflow 系列) - 新增 repo-* 领域技能 - 技能内容完整填充,包含模板、最佳实践、参考文档 ### 3. 配置优化 - .gitignore 添加 AGENTS.md 符号链接忽略规则 - 删除旧版 AGENT.md/QUICKSTART.md/agents/*.md(由插件提供) Co-authored-by: Twoliges<202383290096@nuist.edu.cn> # message auto-generated for no-merge-commit merge: !310 merge master into master feat(agent): agent/skills 迁移至 cuda2ascend 基类继承架构 Created-by: Twoliges Commit-by: Twoliges Merged-by: cann-robot Description: ## 描述 将 ops-blas 仓的 agent/skills 从自包含工作流迁移至 cuda2ascend 基类继承架构。 ### 改动原因 当前 agent/skills 维护了一套 blas -* 命名的自包含工作流,编排逻辑与领域知识耦合,跨仓无法复用。cannbot-skills 仓的 cuda2ascend 插件已提供基类工作流(FINAL),各算子仓作为子类通过 --override 以相同逻辑名覆写 5 个虚拟 skill。ops-sparse 已完成此迁移,本次对齐。 ### 采取的方法 1. **重命名为基类通用逻辑名**:blas -* → repo-* 2. **解耦工作流步骤引用**:去掉 SKILL.md 中对特定步骤的引用("2.x.2 联调前"等),改为通用场景描述 3. **代码模板重构**:templates/ → references/,嵌套结构 references/<model>/blas /{op}/archXX/ 4. **内联代码抽取为模板**:测试 SKILL.md 中代码示例抽取为独立模板文件到 references/test/{op}/ ### 变更清单 | skill | 源 | 文件数 | 关键变更 | |-------|-----|--------|---------| | repo-build-guide | blas -build-commands | 1 | 重命名 + 解耦 | | repo-coding-rules | blas -ascendc-coding-rules + blas -log + 硬规则 6/9/13/14 | 15 | 合并 3 源 + 新建 sparse-coding-conventions.md | | repo-knowledge | blas -lib-rules + 硬规则 7/11/12 | 2 | 重命名 + 新建 sparse-domain-rules.md | | repo-op-templates | blas -op-templates | 13 | templates→references 嵌套重构 | | repo-test-develop | blas -ST-develop | 7 | 内联代码抽取为 6 个测试模板 | | workflow-doc-templates | blas -new-op-workflow/assets | 14 | 基类命名 13 模板 + sparse 定制 | **删除**:blas -new-op-workflow(编排)、blas -new-op-workflow-maintain、agent-model-select、asc-devkit-reference、op-samples-reference、gitcode-pr-issue-guide、cannbot_references.json —— 由基类(FINAL)或基类生态处理。 **新增**:5个 SKILL.md + 若干个 reference 文件。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-blas/issues/329 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ### 静态验证 - [x] 5 个 SKILL.md 的 name: 字段与目录名一致(repo-build-guide / repo-coding-rules / repo-knowledge / repo-op-templates / repo-test-develop) - [x] 所有 SKILL.md 中引用的 references 路径均实际存在 - [x] 目录结构与 ops-blas(迁移后)对齐:5 个 skill 文件夹命名一致 - [x] 代码模板嵌套结构 references/<model>/blas/{op}/archXX/ 镜像仓库实际目录 blas/{op}/archXX/ ### 功能验证 - [x] 运行 bash agent/init.sh opencode 成功链接基类 + override skills - [x] .opencode/skills/ 下 6 个 override skill 正确链接到 agent/skills/repo-* - [x] 基类 skill(ops-direct-invoke-workflow 等)正确链接到 cuda2ascend 插件目录 - [x] 启动 opencode 后 PM Agent 能正确加载 ops-direct-invoke-workflow skill ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> - 本 PR 不涉及算子使用文档更新 - agent/skills 内的 SKILL.md 和 references 即为本次更新的全部文档产物 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!310 | 21 天前 | |
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: 新增面向arch35的aclblasCherk接口 Co-authored-by: eternityk<taoyikun@huawei.com> # message auto-generated for no-merge-commit merge: !320 merge aclblasCherk into master Feat: 新增面向arch35的aclblasCherk接口 Created-by: eternityk Commit-by: eternityk Merged-by: cann-robot Description: ## 描述 BLAS Level 3 标准接口中的 HERK(Hermitian Rank-k Update)算子用于计算复数 Hermitian 矩阵的秩-k 更新: C = alpha·A·A^H + beta·C。当前 ops-blas 仓缺少该算子的 arch35 实现,需要新增 aclblasCherk 接口以补全 BLAS Level 3 复数算子覆盖范围。 ## 关联的Issue [#345](https://gitcode.com/cann/ops-blas/issues/345) ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!320 | 8 天前 | |
fix(gemm):新增 gemm 实现并更新精度标准为MIXED_TOLERANCE Co-authored-by: OpenCode<opencode@ops-blas.local> Co-authored-by: 2301_78862378<242060376@hdu.edu.cn> # message auto-generated for no-merge-commit merge: !292 merge pr_229 into master fix(gemm):新增 gemm 实现并更新精度标准为MIXED_TOLERANCE Created-by: 2301_78862378 Commit-by: 2301_78862378;OpenCode Merged-by: cann-robot Description: ## 描述 基于 PR #229 的 gemm 算子实现,修复 PR #229 的问题并更新测试精度标准为 MIXED_TOLERANCE。 ### 目录重构 将原 blas/gemm/ 下的 gemm_ex 相关文件移动到 blas/gemm_ex/,为后续 gemm 算子腾出目录 ### 新增算子实现 - **aclblasSgemm**:FP32 通用矩阵乘法,Cube kernel 使用 Blaze tensor_api 路径(GM→L1→L0→Mmad→L0C→GM),通过列主序交换(col-major swap)适配 BLAS 列主序语义 - **aclblasCgemm**:Complex32 通用矩阵乘法,分解为 4 个实数矩阵乘法(Re/Im 组合),参数类型使用 aclblasComplex* - 完整的 Validate + Launch 架构分离 - 参数校验:handle/trans/dimensions/lda/ldb/ldc/alpha/beta/A/B/C 全覆盖 - dlog 集成:OP_LOGE/OP_LOGD/OP_LOGI 分级日志 - Workspace 管理:使用 aclblasGetEffectiveWorkspace ### Cube kernel tensor_api 重构 - GM→L1: DataCopy+Nd2NzParams → Copy(CopyGM2L1{}) - L1→L0A/B: LoadData+LoadData2DParamsV2 → Copy(CopyL12L0A/B{}) - Mmad: Mmad+MmadParams → Mmad(MmadAtom{}.with(params)) - L0C→GM: Fixpipe+FixpipeParamsArch3510 → CopyL0C2GM{}.Call() - 转置: ifTranspose → GM layout NDExt/DNExt 自动派发 - GM tensor 构造使用 MakeFrameLayout,将 leadingDim 作为 shape 维度传入,解决 BLAS 列主序 lda≠K 场景 ### 非对齐大矩阵修复 - Fixpipe N 尾块 nSize 按 16 对齐(对齐 sgemm_ex) - tempAB 中间结果 ldc 按 16 对齐(CeilAlign),新增 cLdc 字段 - Vector kernel DataCopy → DataCopyPad(支持非 32 字节对齐搬运) ### 编译错误修复 - 修复函数名错误:aclblasCheckEffectiveWorkspaceSize → CheckEffectiveWorkspaceSize - 修复函数名错误:aclblasGetEffectiveWorkspace → GetEffectiveWorkspace - 修复 aclblasSgemm/aclblasCgemm 缺少 extern C 导致符号 mangled,链接失败 ### 代码规范修复 - 删除死代码:DeinterleaveKernel/ComplexAlphaBetaKernel 及对应 launcher(无调用点,~400行) - 移除 gemm_tiling_data.h 中未使用的 GemmDTypeCase 枚举(与 gemm_ex ODR 冲突) - 删除 gemm_golden.h 冗余 include - 删除 gemm_test.cpp 冗余 include - 修复 golden 错误码:ACLBLAS_STATUS_NOT_INITIALIZED → ACLBLAS_STATUS_HANDLE_IS_NULLPTR ### 功能修复 - 修复 Cube 核使用 GetAivCoreCount → GetAicCoreCount(Sgemm + Cgemm) - 修复 ValidateGemmPointers:k>0 且 C==nullptr 时应拒绝而非放行 - 补充 alpha==0 快速返回路径(对齐 BLAS 标准) ### 精度验证修复 - 精度验证从 MERE_MARE 切换为 MIXED_TOLERANCE(对齐生态算子开源精度标准) - 修复 Complex GEMM 精度验证忽略虚部 - alpha==0 时测试使用 EXACT 位精确校验 ## 关联的Issue 无 ## 测试 - FP32 GEMM:NN/NT/TN/TT/CN 转置、16~512 维度、alpha/beta 组合、m/n/k=0 边界、全参数异常校验 - Complex32 GEMM:NN/NT/TN/TT/CN/CC 转置、复数 alpha/beta、m/n/k=0 边界、异常校验 - 非对齐大矩阵(sgemm):S_L0_15(NN, 693×693×693)、S_L0_16(TN, 693×521×377,lda≠K 非方阵场景) - 非对齐大矩阵(cgemm):C_L0_14(NN, 693×521×377)、C_L0_15(TN, 693×521×377, 复数 alpha) - 52 个测试全部 PASSED(ascend950/arch35) ## 文档更新 - 新增 blas/gemm/README.md:接口说明、参数表、约束条件、调用示例、编译命令 - 更新 README.md、CONTRIBUTING.md、docs/zh/api_list.md 中的路径引用(gemm → gemm_ex) - README 补充约束说明和精度验证章节 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!292 | 20 天前 | |
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 | 4 个月前 | |
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 | 1 个月前 | |
fix(gemm):新增 gemm 实现并更新精度标准为MIXED_TOLERANCE Co-authored-by: OpenCode<opencode@ops-blas.local> Co-authored-by: 2301_78862378<242060376@hdu.edu.cn> # message auto-generated for no-merge-commit merge: !292 merge pr_229 into master fix(gemm):新增 gemm 实现并更新精度标准为MIXED_TOLERANCE Created-by: 2301_78862378 Commit-by: 2301_78862378;OpenCode Merged-by: cann-robot Description: ## 描述 基于 PR #229 的 gemm 算子实现,修复 PR #229 的问题并更新测试精度标准为 MIXED_TOLERANCE。 ### 目录重构 将原 blas/gemm/ 下的 gemm_ex 相关文件移动到 blas/gemm_ex/,为后续 gemm 算子腾出目录 ### 新增算子实现 - **aclblasSgemm**:FP32 通用矩阵乘法,Cube kernel 使用 Blaze tensor_api 路径(GM→L1→L0→Mmad→L0C→GM),通过列主序交换(col-major swap)适配 BLAS 列主序语义 - **aclblasCgemm**:Complex32 通用矩阵乘法,分解为 4 个实数矩阵乘法(Re/Im 组合),参数类型使用 aclblasComplex* - 完整的 Validate + Launch 架构分离 - 参数校验:handle/trans/dimensions/lda/ldb/ldc/alpha/beta/A/B/C 全覆盖 - dlog 集成:OP_LOGE/OP_LOGD/OP_LOGI 分级日志 - Workspace 管理:使用 aclblasGetEffectiveWorkspace ### Cube kernel tensor_api 重构 - GM→L1: DataCopy+Nd2NzParams → Copy(CopyGM2L1{}) - L1→L0A/B: LoadData+LoadData2DParamsV2 → Copy(CopyL12L0A/B{}) - Mmad: Mmad+MmadParams → Mmad(MmadAtom{}.with(params)) - L0C→GM: Fixpipe+FixpipeParamsArch3510 → CopyL0C2GM{}.Call() - 转置: ifTranspose → GM layout NDExt/DNExt 自动派发 - GM tensor 构造使用 MakeFrameLayout,将 leadingDim 作为 shape 维度传入,解决 BLAS 列主序 lda≠K 场景 ### 非对齐大矩阵修复 - Fixpipe N 尾块 nSize 按 16 对齐(对齐 sgemm_ex) - tempAB 中间结果 ldc 按 16 对齐(CeilAlign),新增 cLdc 字段 - Vector kernel DataCopy → DataCopyPad(支持非 32 字节对齐搬运) ### 编译错误修复 - 修复函数名错误:aclblasCheckEffectiveWorkspaceSize → CheckEffectiveWorkspaceSize - 修复函数名错误:aclblasGetEffectiveWorkspace → GetEffectiveWorkspace - 修复 aclblasSgemm/aclblasCgemm 缺少 extern C 导致符号 mangled,链接失败 ### 代码规范修复 - 删除死代码:DeinterleaveKernel/ComplexAlphaBetaKernel 及对应 launcher(无调用点,~400行) - 移除 gemm_tiling_data.h 中未使用的 GemmDTypeCase 枚举(与 gemm_ex ODR 冲突) - 删除 gemm_golden.h 冗余 include - 删除 gemm_test.cpp 冗余 include - 修复 golden 错误码:ACLBLAS_STATUS_NOT_INITIALIZED → ACLBLAS_STATUS_HANDLE_IS_NULLPTR ### 功能修复 - 修复 Cube 核使用 GetAivCoreCount → GetAicCoreCount(Sgemm + Cgemm) - 修复 ValidateGemmPointers:k>0 且 C==nullptr 时应拒绝而非放行 - 补充 alpha==0 快速返回路径(对齐 BLAS 标准) ### 精度验证修复 - 精度验证从 MERE_MARE 切换为 MIXED_TOLERANCE(对齐生态算子开源精度标准) - 修复 Complex GEMM 精度验证忽略虚部 - alpha==0 时测试使用 EXACT 位精确校验 ## 关联的Issue 无 ## 测试 - FP32 GEMM:NN/NT/TN/TT/CN 转置、16~512 维度、alpha/beta 组合、m/n/k=0 边界、全参数异常校验 - Complex32 GEMM:NN/NT/TN/TT/CN/CC 转置、复数 alpha/beta、m/n/k=0 边界、异常校验 - 非对齐大矩阵(sgemm):S_L0_15(NN, 693×693×693)、S_L0_16(TN, 693×521×377,lda≠K 非方阵场景) - 非对齐大矩阵(cgemm):C_L0_14(NN, 693×521×377)、C_L0_15(TN, 693×521×377, 复数 alpha) - 52 个测试全部 PASSED(ascend950/arch35) ## 文档更新 - 新增 blas/gemm/README.md:接口说明、参数表、约束条件、调用示例、编译命令 - 更新 README.md、CONTRIBUTING.md、docs/zh/api_list.md 中的路径引用(gemm → gemm_ex) - README 补充约束说明和精度验证章节 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!292 | 20 天前 | |
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 | 4 个月前 | |
feat(arch35): 新增 geam 算子,包含 aclblasSgeam 和 aclblasCgeam 接口 Co-authored-by: iuyi<202313350054@nuist.edu.cn> # message auto-generated for no-merge-commit merge: !328 merge feat/geam into master feat(arch35): 新增 geam 算子,包含 aclblasSgeam 和 aclblasCgeam 接口 Created-by: iuyi Commit-by: iuyi Merged-by: cann-robot Description: ## 描述 GEAM(General Matrix Add)执行带标量缩放的矩阵加法运算,支持对输入矩阵 A、B 分别施加可选的转置(Transpose)或共轭转置(ConjTrans)操作。数学定义为: txt C[i, j] = alpha * op(A)[i, j] + beta * op(B)[i, j], i ∈ [0, m), j ∈ [0, n) 其中 op(X) 根据转置参数取 X(NoTrans)、X^T(Trans)或 X^H(ConjTrans,仅复杂数有意义,浮点数等价于 Trans)。矩阵采用列主序(Column-Major)存储,X[i, j] 的物理地址为 X[i + j * ldX]。 本算子提供两个接口:aclblasSgeam(单精度浮点 float)与 aclblasCgeam(单精度复数 aclblasComplex),覆盖实数与复数两类矩阵加法场景。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 test/geam/ 下测试全部通过 ## 文档更新 blas/geam/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!328 | 6 天前 | |
/approve Co-authored-by: LambdaMiX<202400800552@mail.sdu.edu.cn> # message auto-generated for no-merge-commit merge: !303 merge fix/install-deps-pigz into master fix: 修正 install_deps.sh 中 pigz 安装提示与成功消息不一致问题 Created-by: LambdaMiX Commit-by: LambdaMiX Merged-by: cann-robot Description: ## 描述 ## 问题描述 install_deps.sh 脚本存在两个问题: 1. **pigz 安装提示与默认行为不一致**: install_pigz() 函数中 read -p "Install pigz? [Y/n]" 提示符 [Y/n] 暗示 Y 为默认选项,但用户按 Enter(空输入)时实际走"跳过安装"分支,导致用户以为选择了 Yes 却跳过了 pigz 安装。 2. **成功消息误报**:pigz 被跳过后,脚本末尾仍无条件打印 "All dependencies installed successfully!",与实际状态不一致,在自动化流程中会造成误判。 ## 修改内容 1.修正 install_pigz() 中 read 交互逻辑:空输入视为 Yes(符合 [Y/n] 惯例) 2.新增 PIGZ_SKIPPED 变量追踪 pigz 跳过状态 main() 末尾根据 PIGZ_SKIPPED 输出不同消息:跳过时提示用户手动安装命令(pigz skipped, run 'sudo apt install pigz' to install manually),而非声称全部安装成功 ## 关联的Issue issue [#327](https://gitcode.com/cann/ops-blas/issues/327) ## 测试 1. 交互模式:运行 bash install_deps.sh,pigz 未安装时按 Enter,确认 pigz 被安装(而非跳过) 2. 交互模式:输入 n,确认 pigz 被跳过,且末尾输出提示用户手动安装的消息:"All mandatory dependencies installed successfully! (pigz skipped, run 'sudo apt install pigz' to install manually)" 3. 非交互模式:echo "n" | bash install_deps.sh,确认脚本正常完成且输出消息准确 4. pigz 已安装场景:确认脚本正常识别并跳过安装步骤 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!303 | 24 天前 | |
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版本配套的源码,如需获取其他版本源码,参考上述命令获取。
📖学习教程
- 快速入门:从零开始快速体验项目核心基础能力,涵盖源码编译、算子调用、开发与调试等操作。
💬相关信息
🤝联系我们
本项目功能和文档正在持续更新和完善中,建议您关注最新版本。