news 2026/5/9 14:36:37

CANN/pyasc稀疏矩阵乘加API

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/pyasc稀疏矩阵乘加API

asc.language.basic.mmad_with_sparse

【免费下载链接】pyasc本项目为Python用户提供算子编程接口,支持在昇腾AI处理器上加速计算,接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyasc

asc.language.basic.mmad_with_sparse(dst: LocalTensor, fm: LocalTensor, filter: LocalTensor, mmad_params: MmadParams) → None

完成矩阵乘加操作,传入的左矩阵A为稀疏矩阵, 右矩阵B为稠密矩阵 。 对于矩阵A,在mmad_with_sparse计算时完成稠密化; 对于矩阵B,在计算执行前的输入数据准备时自行完成稠密化(按照下文中介绍的稠密算法进行稠密化), 所以输入本接口的B矩阵为稠密矩阵。B稠密矩阵需要通过调用load_data_with_sparse载入,同时加载索引矩阵, 索引矩阵在矩阵B稠密化的过程中生成,再用于A矩阵的稠密化。

对应的Ascend C函数原型

template <typename T = int32_t, typename U = int8_t, typename Std::enable_if<Std::is_same<PrimT<T>, int32_t>::value, bool>::type = true, typename Std::enable_if<Std::is_same<PrimT<U>, int8_t>::value, bool>::type = true> __aicore__ inline void MmadWithSparse(const LocalTensor<T>& dst, const LocalTensor<U>& fm, const LocalTensor<U>& filter, const MmadParams& mmadParams)

参数说明

  • dst:输出,目的操作数,结果矩阵,类型为LocalTensor,支持的TPosition为CO1。起始地址需要256个元素(1024字节)对齐。
  • fm:输入,源操作数,左矩阵A,类型为LocalTensor,支持的TPosition为A2。LocalTensor的起始地址需要512字节对齐。
  • filter:输入,源操作数,右矩阵B,类型为LocalTensor,支持的TPosition为B2。LocalTensor的起始地址需要512字节对齐。
  • mmad_params:输入,矩阵乘相关参数,类型为MmadParams。
    • m:左矩阵Height,取值范围:m∈[0, 4095] 。默认值为0。
    • n:右矩阵Width,取值范围:n∈[0, 4095] 。默认值为0。
    • k:左矩阵Width、右矩阵Height,取值范围:k∈[0, 4095] 。默认值为0。
    • cmatrix_init_val:配置C矩阵初始值是否为0。默认值true。
      • true:C矩阵初始值为0;
      • false:C矩阵初始值通过cmatrix_source参数进行配置。
    • cmatrix_source:配置C矩阵初始值是否来源于C2(存放Bias的硬件缓存区)。默认值为false。
      • false:来源于CO1;
      • true:来源于C2。
    • is_bias:该参数废弃,新开发内容不要使用该参数。如果需要累加初始矩阵,请使用带bias的接口来实现;也可以通过cmatrix_init_val和cmatrix_source参数配置C矩阵的初始值来源来实现。推荐使用带bias的接口,相比于配置cmatrix_init_val和cmatrix_source参数更加简单方便。配置是否需要累加初始矩阵,默认值为false,取值说明如下:
      • false:矩阵乘,无需累加初始矩阵,C = A * B。
      • true:矩阵乘加,需要累加初始矩阵,C += A * B。
    • fm_offset:预留参数。为后续的功能做保留,开发者暂时无需关注,使用默认值即可。
    • en_ssparse:预留参数。
    • en_winograd_a:预留参数。
    • en_winograd_b:预留参数。
    • unit_flag:预留参数。
    • k_direction_align:预留参数。

约束说明

  • 原始稀疏矩阵B每4个元素中应保证最多2个非零元素,如果存在3个或更多非零元素,则仅使用前2个非零元素。
  • 当M、K、N中的任意一个值为0时,该指令不会被执行。
  • 操作数地址对齐要求请参见 《Ascend C算子开发接口》 中的“通用说明和约束-通用地址对齐约束”。

调用示例

import asc dst = asc.LocalTensor(dtype=asc.int32, pos=asc.TPosition.CO1, addr=0, tile_size=400) fm = asc.LocalTensor(dtype=asc.int8, pos=asc.TPosition.A2, addr=0, tile_size=400) filter = asc.LocalTensor(dtype=asc.int8, pos=asc.TPosition.B2, addr=0, tile_size=400) mmad_params = asc.MmadParams( m=20, n=20, k=20, is_bias=False, fm_offset=0, en_ssparse=False, en_winograd_a=False, en_winograd_b=False ) asc.mmad_with_sparse(dst, fm, filter, mmad_params)

【免费下载链接】pyasc本项目为Python用户提供算子编程接口,支持在昇腾AI处理器上加速计算,接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyasc

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 14:34:44

DoWhy因果推断库实战:从理论到业务评估的完整指南

1. 项目概述&#xff1a;为什么我们需要一个专门的因果推断库&#xff1f;在数据科学和机器学习领域&#xff0c;预测模型已经相当成熟了。我们能用XGBoost精准预测用户流失&#xff0c;用神经网络识别图像&#xff0c;但当我们被问到“如果我们把产品价格降低10%&#xff0c;销…

作者头像 李华
网站建设 2026/5/9 14:33:42

PyTorch、TensorFlow与Keras工程选型实操指南

1. 这不是“选哪个更好”的站队指南&#xff0c;而是三年踩坑后我画的三张实操地图你点开这个标题&#xff0c;大概率正站在一个真实而具体的十字路口&#xff1a;手头有个图像分类项目要启动&#xff0c;老板说“尽快出效果”&#xff0c;数据集刚清洗完还带着热气&#xff0c…

作者头像 李华
网站建设 2026/5/9 14:29:30

谷歌智能眼镜2026年将问世,Gemini驱动,多品牌合作亮点多!

谷歌智能眼镜即将登场去年12月&#xff0c;有人试用了尚在开发阶段的多款Google Glasses。很快&#xff0c;最终版本就能买到。具体推出时间和售价&#xff0c;再过几天或许会有更多消息。尽管Meta是致力于以眼镜形式抢占人们面部设备市场的最大科技公司&#xff0c;但并非唯一…

作者头像 李华
网站建设 2026/5/9 14:28:36

CANN/pyasc取小数计算函数

asc.language.adv.frac 【免费下载链接】pyasc 本项目为Python用户提供算子编程接口&#xff0c;支持在昇腾AI处理器上加速计算&#xff0c;接口与Ascend C一一对应并遵守Python原生语法。 项目地址: https://gitcode.com/cann/pyasc asc.language.adv.frac(dst: LocalT…

作者头像 李华
网站建设 2026/5/9 14:27:07

CANN/pyasc adds算子矢量加标量API

asc.language.basic.adds 【免费下载链接】pyasc 本项目为Python用户提供算子编程接口&#xff0c;支持在昇腾AI处理器上加速计算&#xff0c;接口与Ascend C一一对应并遵守Python原生语法。 项目地址: https://gitcode.com/cann/pyasc asc.language.basic.adds(dst: Lo…

作者头像 李华
网站建设 2026/5/9 14:26:30

CANN/ops-math ClipByValueV2算子

ClipByValueV2 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库&#xff0c;实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系…

作者头像 李华