CANN/ops-blas spmv测试

发布时间:2026/5/29 4:23:58

CANN/ops-blas spmv测试 spmv算子实现【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas概述BLAS spmv算子实现。Spmv(Symmetric Packed Matrix-Vector Multiplication)算子实现了对称压缩矩阵与向量的乘法运算是BLAS基础线性代数库中的核心算子之一。该算子针对对称矩阵的存储特性进行了优化采用压缩存储格式以节省内存空间并高效完成矩阵与向量的乘加运算。支持的产品Atlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品目录结构介绍├── spmv │ ├── CMakeLists.txt // 编译工程文件 │ ├── README.md // 说明文档 │ └── spmv_test.cpp // 算子调用样例算子描述算子功能spmv算子实现了将对称压缩矩阵乘以向量。对应的数学表达式为z alpha * A * x beta * yA为对称压缩矩阵x和y是向量alpha和beta是标量对称矩阵A的下三角部分元素按行连续打包储存元素A(i,j)储存在位置AP[j i * (i 1) / 2]中且i j对应的对称部分通过已有元素推断得出。压缩对称矩阵格式仅需要n * (n 1) / 2个元素储存。对应的接口为int aclblasSpmv(const float *aPacked, 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);参数spmv 参数说明参数列表Param.Memoryin/out含义nin对称压缩矩阵 A 的行数和列数。alphahost/devicein用于乘法的 type 标量。aPackeddevicein对称压缩矩阵 type 数组维度为 n x n。xdeviceintype 向量包含 n 个元素。incxinx 中连续元素之间的步长。betahost/devicein用于乘法的 type 标量。如果 beta 0则 y 不必是有效输入。ydeviceintype 向量包含 n 个元素。incyiny 中连续元素之间的步长。zdeviceouttype 向量包含 n 个元素。算子规格算子类型(OpType)Spmv算子输入nameshapedata typeformatAN * (N 1) /2floatNDxNfloatNDyNfloatNDalpha1floatNDbeta1floatND算子输出zNfloatND核函数名spmv_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 --opsspmv --run # --ops算子名 --run可选参数执行测试样例执行结果如下说明精度对比成功。[Success] Case accuracy is verification passed.【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻