| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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的aclblasSgemmGroupedBatched接口 Co-authored-by: Crrryyyy<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !155 merge aclblasGemmGroupedBatched into master Feat: 新增面向arch35的aclblasSgemmGroupedBatched接口 Created-by: Crrryyyy Commit-by: Crrryyyy Merged-by: cann-robot Description: ## 描述 新增面向 arch35 (Ascend950) 平台的 aclblasSgemmGroupedBatched 分组批量矩阵乘接口。 该接口在标准 GEMM 基础上引入 **分组(group)** 语义:每个分组可拥有独立的 (m, n, k, transa, transb, alpha, beta, lda, ldb, ldc) 参数及 groupSize,同一分组内各 batch 共享该组参数,在单次调用中完成所有分组内批次的 GEMM 计算: C[i] = alpha[g] × op(A[i]) × op(B[i]) + beta[g] × C[i], i 属于分组 g **支持的数据类型**: | 数据类型 | 执行路径 | 说明 | |----------|----------|------| | S (FP32) | NPU | AIV SIMD membase 模式,多核并行处理各 batch | **核心设计**: - transa=N 时采用列逐步累加(ColumnWise)模式;transa=T 时采用行点积(DotProduct)模式 - alpha=0 或 k=0 时走 BetaOnly 路径:仅执行 C = beta × C - 总 batch 数(sum(groupSize[g]))均匀分配到各 Vector Core - Host 侧使用本地 kernel 声明,不复用已删除的公共头文件 aclblas_kernel_do.h - 测试框架扩展:csv_loader 支持分号分隔数组解析,fill.h 扩展 Double/Complex 填充 **交付物清单**: | 类别 | 文件 | |------|------| | Host 代码 | blas/gemm_grouped_batched/arch35/gemm_grouped_batched_host.cpp | | Kernel 代码 | blas/gemm_grouped_batched/arch35/gemm_grouped_batched_kernel.cpp | | TilingData | blas/gemm_grouped_batched/arch35/gemm_grouped_batched_tiling_data.h | | 测试代码 | test/gemm_grouped_batched/ | | 算子文档 | blas/gemm_grouped_batched/README.md | | 接口声明 | include/cann_ops_blas.h | | 测试框架 | test/frame/csv_loader.h、test/frame/fill.h | ## 关联的Issue [#187](https://gitcode.com/cann/ops-blas/issues/187) ## 测试 ### ST 精度测试 - **测试框架**:CSV 驱动 GTest,53 条用例(17 条 L0 + 36 条 L1) - **测试覆盖**:单组/多组、NN/NT/TN/TT 转置组合、groupCount/groupSize 变化、alpha/beta 各种取值、边界 shape(零维/非对齐/极端维度)、非法参数校验 - **验证方式**:OpenBLAS golden 参考实现,MERE/MARE 精度校验(FP32: MERE < 2⁻¹³) ### 编译测试 bash bash build.sh --ops=gemm_grouped_batched --soc=ascend950 --run ## 文档更新 - 新增 blas/gemm_grouped_batched/README.md:接口说明、参数规格、支持的数据类型、已知限制、编译/测试命令、调用示例 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!155 | 1 个月前 | |
Feat: 新增面向arch35的aclblasSgemmGroupedBatched接口 Co-authored-by: Crrryyyy<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !155 merge aclblasGemmGroupedBatched into master Feat: 新增面向arch35的aclblasSgemmGroupedBatched接口 Created-by: Crrryyyy Commit-by: Crrryyyy Merged-by: cann-robot Description: ## 描述 新增面向 arch35 (Ascend950) 平台的 aclblasSgemmGroupedBatched 分组批量矩阵乘接口。 该接口在标准 GEMM 基础上引入 **分组(group)** 语义:每个分组可拥有独立的 (m, n, k, transa, transb, alpha, beta, lda, ldb, ldc) 参数及 groupSize,同一分组内各 batch 共享该组参数,在单次调用中完成所有分组内批次的 GEMM 计算: C[i] = alpha[g] × op(A[i]) × op(B[i]) + beta[g] × C[i], i 属于分组 g **支持的数据类型**: | 数据类型 | 执行路径 | 说明 | |----------|----------|------| | S (FP32) | NPU | AIV SIMD membase 模式,多核并行处理各 batch | **核心设计**: - transa=N 时采用列逐步累加(ColumnWise)模式;transa=T 时采用行点积(DotProduct)模式 - alpha=0 或 k=0 时走 BetaOnly 路径:仅执行 C = beta × C - 总 batch 数(sum(groupSize[g]))均匀分配到各 Vector Core - Host 侧使用本地 kernel 声明,不复用已删除的公共头文件 aclblas_kernel_do.h - 测试框架扩展:csv_loader 支持分号分隔数组解析,fill.h 扩展 Double/Complex 填充 **交付物清单**: | 类别 | 文件 | |------|------| | Host 代码 | blas/gemm_grouped_batched/arch35/gemm_grouped_batched_host.cpp | | Kernel 代码 | blas/gemm_grouped_batched/arch35/gemm_grouped_batched_kernel.cpp | | TilingData | blas/gemm_grouped_batched/arch35/gemm_grouped_batched_tiling_data.h | | 测试代码 | test/gemm_grouped_batched/ | | 算子文档 | blas/gemm_grouped_batched/README.md | | 接口声明 | include/cann_ops_blas.h | | 测试框架 | test/frame/csv_loader.h、test/frame/fill.h | ## 关联的Issue [#187](https://gitcode.com/cann/ops-blas/issues/187) ## 测试 ### ST 精度测试 - **测试框架**:CSV 驱动 GTest,53 条用例(17 条 L0 + 36 条 L1) - **测试覆盖**:单组/多组、NN/NT/TN/TT 转置组合、groupCount/groupSize 变化、alpha/beta 各种取值、边界 shape(零维/非对齐/极端维度)、非法参数校验 - **验证方式**:OpenBLAS golden 参考实现,MERE/MARE 精度校验(FP32: MERE < 2⁻¹³) ### 编译测试 bash bash build.sh --ops=gemm_grouped_batched --soc=ascend950 --run ## 文档更新 - 新增 blas/gemm_grouped_batched/README.md:接口说明、参数规格、支持的数据类型、已知限制、编译/测试命令、调用示例 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-blas!155 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |