已合并
feat(cdgmm): 迁移 ColwiseMul 为行主序 Cdgmm;新增 extensions/ 目录迁移 ComplexMatDot #314
2301_82146483创建于 7月28日
feat(cdgmm): 迁移 ColwiseMul 为行主序 Cdgmm;新增 extensions/ 目录迁移 ComplexMatDot #314
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 2301_82146483 的贡献)7月28日 创建了 pull request,commit bda8e3f7
7月28日 关联了issue:[Bug-Report|缺陷反馈]: colwise_mul 和 complex_mat_dot 不属于 BLAS 标准算子,需明确归属和命名规范
7月28日 关联了issue:[Bug-Report|缺陷反馈]: colwise_mul 和 complex_mat_dot 不属于 BLAS 标准算子,需明确归属和命名规范
7月28日 update merge request[project id: 8916851, iid: 314, commit_id: 73eb048316d43570997c73fa7a9ed0b81ef7729e] virtual merging success
7月28日 update merge request[project id: 8916851, iid: 314, commit_id: 73eb048316d43570997c73fa7a9ed0b81ef7729e] virtual merging success
7月28日 update merge request[project id: 8916851, iid: 314, commit_id: 73c86d7344bf7fd29a3324bd6786b7de1c4cc505] virtual merging success
7月28日 update merge request[project id: 8916851, iid: 314, commit_id: 73c86d7344bf7fd29a3324bd6786b7de1c4cc505] virtual merging success
此处折叠了49条消息 查看更多
29 天前 添加了label:approved
luowen203_gg123
29 天前 评论:
29 天前 评论:
/lgtm


29 天前 添加了label:lgtm
29 天前 关闭了关联的issue
29 天前 合入了pull request
关联 Issue
Closes #84
背景
Issue #84 要求对仓库中的非标准算子进行规范化迁移:
aclblasColwiseMul是一个非标准接口,需重构为aclblasCdgmm,接口形态对齐 cuBLAScublasCdgmm。extensions/目录,将扩展类算子(如complex_mat_dot)从blas/迁移到extensions/,保持与标准 BLAS 算子的目录分离。本次 PR 内容
任务一:aclblasColwiseMul → aclblasCdgmm 迁移
按照迁移方案文档执行,核心策略为行主序、LEFT-only、最小改动:
aclblasColwiseMul,新增aclblasCdgmm,参数数量、顺序和类型对齐cublasCdgmm(handle, mode, m, n, A, lda, x, incx, C, ldc)。lda/ldc表示行跨度(>= max(1, n)),与 cuBLAS 列主序存在差异,文档已明确说明。ACLBLAS_SIDE_LEFT(C[i,j] = x[i] * A[i,j]),RIGHT返回ACLBLAS_STATUS_NOT_SUPPORTED,非法 mode 返回ACLBLAS_STATUS_INVALID_ENUM。lda/ldc、正负incx、padding 保持、原地执行(A==C && lda==ldc)。new[]改为std::vector,修复所有错误路径的内存泄漏。GetAivCoreCount()替代硬编码 8 核,多核仍按行切分。colwise_mul的 GatherMask 去交错、复数标量乘法、Gather 重新交错、ping-pong UB、大行分块等逻辑全部原样保留,仅拆分输入/输出行偏移为2*row*lda/2*row*ldc。ENABLE_BLAS_DGMM改为ENABLE_BLAS_SDGMM,使 arch22 Cdgmm 不被 arch35 Sdgmm 的asc-devkit >= 9.1门槛误伤。incx正负、lda/ldcpadding、原地执行、长行超 UB tile、多核切分等。blas/colwise_mul/、test/colwise_mul/,更新docs/zh/api_list.md和blas/dgmm/README.md。任务二:complex_mat_dot → extensions/complexmatdot 迁移
extensions/目录:在根目录创建extensions/,用于存放非标准 BLAS 扩展算子。blas/complex_mat_dot/→extensions/complexmatdot/arch22/,文件名统一去掉下划线。complexmatdot_kernel.h。new[]改为std::vector。test/complex_mat_dot/complex_mat_dot/→test/extensions/complexmatdot/。extensions/CMakeLists.txt追加到ALL_BLAS_SRC_FILES(而非覆盖);cmake/test.cmake增加extensions/目录搜索路径;根CMakeLists.txt新增add_subdirectory(extensions)和 include 路径。docs/zh/api_list.md链接更新。blas/complex_mat_dot/和test/complex_mat_dot/。测试结果
远端 Ascend 910B3 环境构建与测试:
cdgmm --soc=ascend910b3 --runcomplexmatdot --soc=ascend910b3 --runsdgmm --soc=ascend950dgmm --soc=ascend910b3dgmm --soc=ascend950符号检查:
libops_blas.so导出aclblasCdgmm、aclblasComplexMatDot、aclblasCreateaclblasColwiseMulrg -i "aclblasColwiseMul|ColwiseMul|colwise_mul"无有效功能代码引用目标 SoC