已关闭
[Bug-Report|缺陷反馈]: colwise_mul 和 complex_mat_dot 不属于 BLAS 标准算子,需明确归属和命名规范 #84
xutianze创建于  5月30日关闭于  7月29日
xutianze
xutianze成员
5月30日 创建

问题描述

blas/ 目录下存在两个自定义扩展算子,不属于 BLAS 标准,与标准算子混放在一起,缺乏明确的归属定位和命名规范。

涉及的算子:

目录 算子功能 数学表达
blas/colwise_mul/ 复数向量与矩阵每行逐元素乘法 result[i,j] = vec[i] * mat[i,j]
blas/complex_mat_dot/ 两个复数矩阵逐元素乘法(Hadamard 积) result[i,j] = matx[i,j] * maty[i,j]

当前问题:

  1. 归属不明确:这两个算子不属于 BLAS 标准(Level-1/2/3),但直接放在 blas/ 目录下与标准算子混在一起,容易混淆
  2. 命名风格不统一:使用了下划线分隔(colwise_mulcomplex_mat_dot),与标准算子的命名风格(全小写无分隔符,如 gemvdotscal)不一致
  3. 接口签名不符合 BLAS 风格:头文件中这两个接口(aclblasColwiseMulaclblasComplexMatDot)的参数顺序和类型与 BLAS 风格差异较大(参见相关 Issue)

建议方案(二选一):

方案 A:与 BLAS 算子对应

  • 如果能找到 BLAS 标准中功能等价的算子,则统一使用标准算子名,废弃自定义实现
  • 例如 complex_mat_dot 可考虑是否等价于 BLAS 中某种已有算子的变体

方案 B:建立独立的扩展算子存放位置和命名规范

  • 将自定义扩展算子从 blas/ 移出,放到独立的 extensions/ 目录
  • 制定统一的命名规范(如全小写无下划线、或驼峰等),与标准 BLAS 算子明确区分
  • 目录结构示例:
    extensions/
    ├── colwisemul/
    └── complexmatdot/
    

参考:

环境信息

  • 芯片型号:N/A(架构设计问题)
  • CANN 版本:当前版本
  • 操作系统:N/A

重现步骤

  1. 查看 blas/ 目录结构,发现 colwise_mulcomplex_mat_dot 两个非标准算子目录
  2. 对比 BLAS 标准和 cuBLAS 扩展列表,确认这两个算子均不在其中

预期结果

明确自定义扩展算子的归属位置和命名规范,与标准 BLAS/cuBLAS 算子区分开。

日志 / 截图

备注

likedislike
xutianzexutianze成员
5月30日 关联了pull request:Feat: blas-pr-issue-template 新增 GitCode API 提交流程和脚本
xutianzexutianze成员
5月30日 删除了关联的pull request:Feat: blas-pr-issue-template 新增 GitCode API 提交流程和脚本
暖阳成员
6月1日 将 xutianze 设为负责人
xutianzexutianze成员
7月6日 将 QK_25415 设为负责人
xutianzexutianze成员
7月6日 移除了负责人 xutianze
2301_821464832301_82146483
7月28日 关联了pull request:feat(cdgmm): 迁移 ColwiseMul 为行主序 Cdgmm;新增 extensions/ 目录迁移 ComplexMatDot
CANN-robotCANN-robot成员
7月29日 关闭了 issue
CANN-robotCANN-robot成员
7月29日 添加了label:resolved