CANN/ops-blas Cgemm算子测试说明
Cgemm算子实现【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas概述BLAS Cgemm算子实现。Cgemm(Complex General Matrix-Matrix multiplication)算子实现了复数矩阵乘法运算是BLAS基础线性代数库中的核心算子之一。该算子实现复数矩阵乘法C alpha * op(A) * op(B) beta * C支持转置和共轭转置支持的产品Atlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品目录结构介绍├── cgemm │ ├── cgemm_kernel.cpp // 算子核函数实现AICAIV混编 │ └── cgemm_host.cpp // 算子Host端实现 ├── test/cgemm │ ├── CMakeLists.txt // 编译工程文件 │ ├── README.md // 说明文档 │ └── cgemm_test.cpp // 算子调用样例算子描述算子功能cgemm算子实现了复数矩阵A与矩阵B的乘法运算并加到矩阵C上。对应的数学表达式为C alpha * op(A) * op(B) beta * C其中op(A)可以是A不转置transANA^T转置transATA^H共轭转置transACop(B)同理。复数乘法公式(abi) * (cdi) (ac-bd) (adbc)i对应的接口int aclblasCgemm(aclblasHandle handle, aclblasOperation transA, aclblasOperation transB, const int64_t m, const int64_t n, const int64_t k, const std::complexfloat alpha, const std::complexfloat *A, const int64_t lda, const std::complexfloat *B, const int64_t ldb, const std::complexfloat beta, std::complexfloat *C, const int64_t ldc, void *stream);参数cgemm 参数说明参数列表Param.Memoryin/out含义handlehostinACL流handle用于传入stream。transAhostin矩阵A操作类型N不转置T转置C共轭转置。transBhostin矩阵B操作类型N不转置T转置C共轭转置。min矩阵A的行数、矩阵C的行数。nin矩阵B的列数、矩阵C的列数。kin矩阵A的列数、矩阵B的行数。alphahostin复数标量alpha。Adevicein复数矩阵A。ldain矩阵A的主维长度。Bdevicein复数矩阵B。ldbin矩阵B的主维长度。betahostin复数标量beta。Cdevicein/out复数矩阵C。ldcin矩阵C的主维长度。算子规格算子类型(OpType)Cgemm算子输入nameshapedata typeformatAM * KcomplexNDBK * NcomplexND算子输出CM * NcomplexND核函数名cgemm算子实现本算子为AICAIV混编算子采用流水线并行设计AIV端Vector Core执行ascblasCgemmPre进行虚实分离将复数矩阵拆分为实部矩阵和虚部矩阵AIC端Cube Core执行4次实矩阵乘法ascblasSmatmul计算结果的实部和虚部AIV端Vector Core执行ascblasCgemmFinal进行虚实合并组装最终复数结果同步机制使用FftsCrossCoreSync进行AIC和AIV之间的同步使用WaitFlagDev等待跨核事件使用vreducev2进行虚实分离使用Gather进行虚实合并。调用实现使用内核调用符调用核函数。编译运行在本样例根目录下执行如下步骤编译并执行算子。配置环境变量请根据当前环境上CANN开发套件包的安装方式选择对应配置环境变量的命令。默认路径root用户安装CANN软件包source /usr/local/Ascend/cann/set_env.sh默认路径非root用户安装CANN软件包source $HOME/Ascend/cann/set_env.sh指定路径install_path安装CANN软件包source ${install_path}/cann/set_env.sh样例执行bash build.sh --opscgemm --run # --ops算子名 --run可选参数执行测试样例执行结果如下说明精度对比成功。Testing cgemm: Output: ... Golden: ... [Success] Case accuracy is verification passed. [PASS] cgemm_test【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考