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. | Memory | in/out | 含义 |
| batchCount | in | 批次数。 | ||
| m | in | 矩阵的行数。 | ||
| n | in | 矩阵的列数。 | ||
| A | device | in | 批量复数矩阵,batchCount个m×n矩阵。 | |
| x | device | in | 批量复数向量,batchCount个向量。 | |
| trans | in | 矩阵操作类型:0=N(普通),1=T(转置),2=C(共轭转置)。 | ||
| dtype | in | 数据类型:0=half,1=float。 | ||
| y | device | out | 批量复数向量,batchCount个向量。 | |
算子规格:
算子类型(OpType) CgemvBatched 算子输入 name shape data type format A, x batchCount × m × n complex<float> ND 算子输出 y batchCount × m complex<float> ND 核函数名 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 --ops=cgemv_batched --run # --ops=<算子名> --run可选参数,执行测试样例执行结果如下,说明精度对比成功。
[Success] Case accuracy is verification passed.
【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考