CANN/ops-blas批量复数矩阵向量乘法
CgemvBatched算子实现【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas概述BLAS CgemvBatched算子实现。CgemvBatched(批量复数矩阵-向量乘法)算子实现了批量复数矩阵与向量的乘法运算是BLAS基础线性代数库中的核心算子之一。该算子针对批量计算场景进行了优化支持普通、转置和共轭转置三种矩阵操作模式高效完成批量矩阵-向量乘法。支持的产品Atlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品目录结构介绍├── cgemv_batched │ ├── CMakeLists.txt // 编译工程文件 │ ├── README.md // 说明文档 │ └── cgemv_batched_test.cpp // 算子调用样例算子描述算子功能CgemvBatched算子实现了批量复数矩阵与向量的乘法。对应的数学表达式为y[i] A[i] * x[i] (trans N) y[i] A[i]^T * x[i] (trans T) y[i] A[i]^H * x[i] (trans C)其中A[i]是复数矩阵x[i]和y[i]是复数向量i是批次索引复数乘法公式(a bi) * (c di) (ac - bd) (ad bc)i对应的接口为int aclblasCgemvBatched(const void *A, const void *x, void *y, const int64_t batchCount, const int64_t m, const int64_t n, const int32_t trans, const int32_t dtype, void *stream);参数cgemv_batched 参数说明参数列表Param.Memoryin/out含义batchCountin批次数。min矩阵的行数。nin矩阵的列数。Adevicein批量复数矩阵batchCount个m×n矩阵。xdevicein批量复数向量batchCount个向量。transin矩阵操作类型0N(普通)1T(转置)2C(共轭转置)。dtypein数据类型0half1float。ydeviceout批量复数向量batchCount个向量。算子规格算子类型(OpType)CgemvBatched算子输入nameshapedata typeformatA, xbatchCount × m × ncomplexfloatND算子输出ybatchCount × mcomplexfloatND核函数名cgemv_batched_kernel算子实现将输入数据从A和x的GM地址分块搬运到UB使用GatherMask分离实部和虚部进行复数矩阵-向量乘法计算最后归约并搬出到y所在的GM地址。调用实现使用内核调用符调用核函数。编译运行在本样例根目录下执行如下步骤编译并执行算子。配置环境变量请根据当前环境上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 --opscgemv_batched --run # --ops算子名 --run可选参数执行测试样例执行结果如下说明精度对比成功。[Success] Case accuracy is verification passed.【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考