CANN/ops-blas symv算子实现
symv算子实现
【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas
概述
BLAS symv算子实现。
symv(Symmetric Matrix-Vector Multiplication)算子实现了对称矩阵与向量的乘法运算,是BLAS基础线性代数库中的核心算子之一。
该算子针对对称矩阵的存储特性进行了优化,并高效完成矩阵与向量的乘加运算。
支持的产品
- Atlas A3 训练系列产品/Atlas A3 推理系列产品
- Atlas A2 训练系列产品/Atlas A2 推理系列产品
目录结构介绍
├── symv │ ├── CMakeLists.txt // 编译工程文件 │ ├── README.md // 说明文档 │ └── symv_test.cpp // 算子调用样例算子描述
- 算子功能:
symv算子实现了将对称压缩矩阵乘以向量。对应的数学表达式为:
z = alpha * A * x + beta * yA为对称矩阵,x和y是向量,alpha和beta是标量
对称矩阵A的下三角部分元素按行储存,对应的对称部分通过已有元素推断得出。压缩对称矩阵格式仅需要n * (n + 1) / 2个元素储存。
对应的接口为:
int aclblasSymv(const float *a, const int64_t lda, const float *x, const float *y, float *z, const float alpha, const float beta, const int64_t n, const int64_t incx, const int64_t incy, void *stream);| 参数 | symv 参数说明 | |||
| 参数列表 | Param. | Memory | in/out | 含义 |
| n | in | 对称矩阵 A 的行数和列数。 | ||
| alpha | host/device | in | 用于乘法的 <type> 标量。 | |
| aPacked | device | in | 对称矩阵 <type> 数组,维度为 n x n。 | |
| lda | in | 用于存储矩阵A的二维数组的主维。 | ||
| x | device | in | <type> 向量,包含 n 个元素。 | |
| incx | in | x 中连续元素之间的步长。 | ||
| beta | host/device | in | 用于乘法的 <type> 标量。如果 beta == 0,则 y 不必是有效输入。 | |
| y | device | in | <type> 向量,包含 n 个元素。 | |
| incy | in | y 中连续元素之间的步长。 | ||
| z | device | out | <type> 向量,包含 n 个元素。 | |
算子规格:
算子类型(OpType) symv 算子输入 name shape data type format A N * (N + 1) /2 float ND x N float ND y N float ND alpha 1 float ND beta 1 float ND 算子输出 z N float ND 核函数名 symv_kernel 算子实现:
将输入数据从A,x,y的GM地址分块搬运到UB,进行计算后再搬出到z所在的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=symv --run # --ops=<算子名> --run可选参数,执行测试样例执行结果如下,说明精度对比成功。
[Success] Case accuracy is verification passed.
【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
