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

CANN/ops-blas sspmv算子实现

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.rkmt.cn/news/1439177.html

相关文章:

  • 如何在Stable-Worldmodel中实现warm-start规划?提升求解效率的关键技巧
  • VTK太复杂?试试用C#的ActiViz库:5步搞定三维点云可视化(避坑指南)
  • AI重塑ITSM:从技术顾问到社区构建者的实践与思考
  • 解决常见问题:Qwen3.6-27B-OBLITERATED使用中的10个疑难解答
  • 如何高效自动化下载国家中小学智慧教育平台电子课本?tchMaterial-parser实用指南深度解析
  • 虚拟化浪潮与元宇宙演进:从技术架构到社会影响深度解析
  • 新手避坑指南:用Arduino IDE 2.2.1点亮源地ESP32-S2-MINI-1开发板上的WS2812B灯珠
  • AI时代商业可见性:从SEO到AI优化的范式转移与实战指南
  • LabVIEW UI 逻辑解耦设计
  • 5分钟彻底改造你的音乐播放器:foobox-cn终极美化方案实战
  • Exodia-7B开发者指南:自定义训练与模型微调全攻略
  • MoE架构深度解析:Qwen3.5-122B-A10B-Uncensored-HauhauCS-Aggressive如何用1220亿参数实现高效推理
  • 2026年4月有实力的水分仪厂家推荐,电磁流量传感器/矿用本安型超声波流量计/本安气体流量计,水分仪公司哪家可靠 - 品牌推荐师
  • 反拖延经济崛起:从AI教练到共享空间,如何科学对抗拖延症?
  • 微信聊天记录如何实现永久本地化存储:WeChatMsg开源工具技术解析
  • 告别抖动!用Cinemachine 2.9.7搞定Unity 2D角色移动时的镜头平滑跟随
  • 国家中小学智慧教育平台电子课本下载完整指南:一键获取PDF教材的高效解决方案
  • 如何利用Notus-7B-v1-openmind构建智能聊天应用:从零开始的完整教程
  • AI驱动的社会工程学攻击:大语言模型如何模拟“邪恶双胞胎”实施身份劫持
  • AI SDLC转型:从虚荣指标到能力进化的三层度量模型实践
  • 用Python+Matplotlib分析美国犯罪率:从数据清洗到散点图绘制的保姆级教程
  • distilcamembert-base-sentiment多格式支持:PyTorch、TensorFlow、ONNX全解析
  • 如何用3步永久保存微信聊天记录:开源工具的完整实践指南
  • 三步搞定国家中小学智慧教育平台电子课本下载:免费开源工具终极指南
  • CentOS 8.3虚拟机里装Sentaurus TCAD,我踩过的7个坑和填坑方法(附详细命令)
  • 别再只关触摸板了!Ubuntu 22.04触屏干扰的终极排查与一键关闭脚本
  • CTF新手也能玩转的隐写术:从WUSTCTF2020的alison_likes_jojo题,手把手教你用Kali工具链(binwalk+foremost+outguess)
  • 揭秘WeChatMsg:将数字对话转化为永恒记忆的数据艺术
  • Qwen3.5-40B-Claude-4.6-Opus-Deckard-Heretic-Uncensored-Thinking推理优化:7个实用技巧提升AI模型性能
  • 穿越机飞控电流不准?深入硬件层:剖析INA169采样电路与‘近零Vsense’误差的根源