当前位置: 首页 > news >正文

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 * y

A为对称压缩矩阵,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。
xdevicein<type> 向量,包含 n 个元素。
incxinx 中连续元素之间的步长。
betahost/devicein用于乘法的 <type> 标量。如果 beta == 0,则 y 不必是有效输入。
ydevicein<type> 向量,包含 n 个元素。
incyiny 中连续元素之间的步长。
zdeviceout<type> 向量,包含 n 个元素。
  • 算子规格:

    算子类型(OpType)Spmv
    算子输入nameshapedata typeformat
    AN * (N + 1) /2floatND
    xNfloatND
    yNfloatND
    alpha1floatND
    beta1floatND
    算子输出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 --ops=spmv --run # --ops=<算子名> --run可选参数,执行测试样例

    执行结果如下,说明精度对比成功。

    [Success] Case accuracy is verification passed.

【免费下载链接】ops-blas本项目是CANN提供的高性能线性代数计算以及轻量化GEMM调用算子库。项目地址: https://gitcode.com/cann/ops-blas

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/907515/

相关文章:

  • 别再硬啃理论了!用ROS2 + AstraPro深度相机,手把手搞定机械手三维手眼标定
  • Gemma-2-9B-IT本地部署完全指南:从环境配置到首次推理只需3步
  • GeoServer新手必看:发布WMS服务时,数据源名称里这个字符千万别用!
  • Qwen2-0.5B代码生成能力详解:从基础编程到复杂算法实现
  • EfficientNet-B7模型压缩与量化:轻量化部署完整指南
  • 2026年知名的波形钢纤维/剪切钢纤维源头工厂推荐 - 品牌宣传支持者
  • AR实时翻译系统:技术架构、核心挑战与工程实践
  • Qwen3.6-35B-A3B-Claude-4.7-Opus-Reasoning-Distilled在GSM8K和MMLU-Pro基准测试中的表现分析
  • 如何永久保存微信聊天记录并生成年度报告:WeChatMsg完整指南
  • JADE算法:基于DTW的鲁棒瞬时频率估计技术解析
  • 2026年加强型地坪铠装缝/金属铠装缝/铠装缝长期合作厂家推荐 - 行业平台推荐
  • 告别Putty!Tabby终端保姆级安装与SSH/SFTP配置全攻略(附快捷键秘籍)
  • Python网页抓取入门:从零构建IMDb电影数据采集器
  • 从DBC文件到AUTOSAR COM信号:手把手教你用ISOLAR-A的ConfGen工具自动生成配置
  • 如何通过开源智能自动化工具Seraphine优化英雄联盟游戏决策体验
  • MindIE/FramePack模型权重管理:HuggingFace模型下载与配置完整指南
  • 构建智能物联网系统:掌握Arduino-ESP32核心开发实战指南
  • 开源项目 vue-office 的扩展与二次开发潜力
  • Smoothieware固件中X-PAXES和mm_per_arc_segment配置项详解:从代码搜索到功能验证
  • 2026年热门的江西动力锂离子电池负极材料/江西锂离子电池负极材料/江西储能锂离子电池负极材料/快充锂离子电池负极材料推荐厂家精选 - 品牌宣传支持者
  • Scenema Audio 零样本语音克隆教程:10 秒参考音频实现完美声线转移
  • 从PLL到Divider:手把手教你用Synopsys DC/PT搞定一个带异步时钟MUX的完整时钟约束流程
  • 别再只会用PEC了!CST材料库实战指南:从Normal介质到Lossy Metal的完整配置流程
  • 2026年性价比高的铠甲缝变形缝/铠甲缝横向对比厂家推荐 - 品牌宣传支持者
  • 从DBC文件到AUTOSAR COM信号映射:手把手教你用ISOLAR-A自动生成通信栈配置
  • 别再搞混了!Xilinx FPGA的HP BANK和HR BANK到底怎么选?从视频接口到DDR布线实战避坑
  • 从LEF到NDM:给后端新手的Innovus和ICC2数据准备入门指南(7nm实战)
  • OLMo-1.7-7B-hf-openmind模型安全与伦理考量:负责任AI开发终极指南
  • Qt多线程实战:用moveToThread给界面‘减负’,实现一个后台日志分析工具(Qt5/C++)
  • 5个实用技巧:优化Qwen3.5-35B-A3B-REAP的推理速度与内存使用