CANN/pyasc稀疏矩阵乘加API
asc.language.basic.mmad_with_sparse【免费下载链接】pyasc本项目为Python用户提供算子编程接口支持在昇腾AI处理器上加速计算接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyascasc.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_ifStd::is_samePrimTT, int32_t::value, bool::type true, typename Std::enable_ifStd::is_samePrimTU, int8_t::value, bool::type true __aicore__ inline void MmadWithSparse(const LocalTensorT dst, const LocalTensorU fm, const LocalTensorU 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。trueC矩阵初始值为0falseC矩阵初始值通过cmatrix_source参数进行配置。cmatrix_source配置C矩阵初始值是否来源于C2存放Bias的硬件缓存区。默认值为false。false来源于CO1true来源于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(dtypeasc.int32, posasc.TPosition.CO1, addr0, tile_size400) fm asc.LocalTensor(dtypeasc.int8, posasc.TPosition.A2, addr0, tile_size400) filter asc.LocalTensor(dtypeasc.int8, posasc.TPosition.B2, addr0, tile_size400) mmad_params asc.MmadParams( m20, n20, k20, is_biasFalse, fm_offset0, en_ssparseFalse, en_winograd_aFalse, en_winograd_bFalse ) asc.mmad_with_sparse(dst, fm, filter, mmad_params)【免费下载链接】pyasc本项目为Python用户提供算子编程接口支持在昇腾AI处理器上加速计算接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyasc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考