aclblasSdgmm 接口当前的参数顺序为 (handle, mode, m, n, x, incx, A, lda, B, ldb),与 BLAS 标准参数顺序 (handle, mode, m, n, A, lda, x, incx, C, ldc) 不一致。此外,输出矩阵参数命名为 B/ldb,而 BLAS 标准使用 C/ldc。需要将接口参数顺序和命名对齐 BLAS 标准,确保接口一致性和可维护性。
信息来源(Origin)
cann 开发者
价值/作用(Benefit / Necessity)
与 BLAS 标准接口保持一致,降低用户迁移和学习成本
统一 BLAS 算子库中输出矩阵使用 C/ldc 的命名规范(与 GEMM 等算子一致)
提升接口可维护性,避免参数顺序不一致导致的调用错误
设计(Design)
将 aclblasSdgmm 接口签名从:
aclblasStatus_t aclblasSdgmm(
aclblasHandle_t handle, aclblasSideMode_t mode,
int m, int n, constfloat* x, int incx,
constfloat* A, int lda, float* B, int ldb)
改为:
aclblasStatus_t aclblasSdgmm(
aclblasHandle_t handle, aclblasSideMode_t mode,
int m, int n,
constfloat* A, int lda, constfloat* x, int incx,
float* C, int ldc)
背景(背景信息)
aclblasSdgmm 接口当前的参数顺序为
(handle, mode, m, n, x, incx, A, lda, B, ldb),与 BLAS 标准参数顺序(handle, mode, m, n, A, lda, x, incx, C, ldc)不一致。此外,输出矩阵参数命名为B/ldb,而 BLAS 标准使用C/ldc。需要将接口参数顺序和命名对齐 BLAS 标准,确保接口一致性和可维护性。信息来源(Origin)
cann 开发者
价值/作用(Benefit / Necessity)
C/ldc的命名规范(与 GEMM 等算子一致)设计(Design)
将
aclblasSdgmm接口签名从:aclblasStatus_t aclblasSdgmm( aclblasHandle_t handle, aclblasSideMode_t mode, int m, int n, const float* x, int incx, const float* A, int lda, float* B, int ldb)改为:
aclblasStatus_t aclblasSdgmm( aclblasHandle_t handle, aclblasSideMode_t mode, int m, int n, const float* A, int lda, const float* x, int incx, float* C, int ldc)涉及修改的文件:
include/cann_ops_blas.h— 公共 API 声明blas/dgmm/arch35/sdgmm_host.cpp— Host 侧实现(Validate/CalTiling/Launch/aclblasSdgmm)blas/dgmm/arch35/sdgmm_tiling_data.h— Tiling 结构体字段ldb→ldcblas/dgmm/arch35/sdgmm_kernel.h— Kernel launcher 声明blas/dgmm/arch35/sdgmm_kernel.cpp— Kernel 实现(内部变量bGm→cGm、ubB→ubC等)test/dgmm/sdgmm/sdgmm_param.h— 测试参数字段ldb→ldc、nullB→nullCtest/dgmm/sdgmm/sdgmm_golden.h— CPU golden 函数签名test/dgmm/sdgmm/arch35/sdgmm_npu_wrapper.h— NPU wrapper 函数签名test/dgmm/sdgmm/arch35/sdgmm_test.cpp— 测试调用点test/dgmm/sdgmm/arch35/sdgmm_test.csv— CSV 列名及用例描述blas/dgmm/README.md— 接口文档(函数原型、参数说明、调用示例)