Skip to content

asc_mmad_sparse(废弃)

产品支持情况

  • Ascend 950PR/Ascend 950DT:不支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品AI Core:不支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:不支持

功能说明

头文件路径为:"c_api/cube_compute/cube_compute.h"

入参unit_flag类型为uint8_tasc_mmad_sparse接口和asc_mmad_sparse_sync接口已废弃。请使用入参unit_flag_mode类型为asc_unit_flag_modeasc_mmad_sparse接口替代;原asc_mmad_sparse_sync接口的同步功能请通过新asc_mmad_sparse接口和asc_sync()实现,具体请参见asc_sync

本接口完成稀疏矩阵乘加操作。传入的左矩阵A为稀疏矩阵,右矩阵B为稠密矩阵;矩阵A在计算时完成稠密化,矩阵B需在输入数据准备阶段完成稠密化。

本接口为矩阵计算接口,仅在AIC上生效。

函数原型

C
__aicore__ inline void asc_mmad_sparse(__cc__ int32_t* c,
                                       __ca__ int8_t* a,
                                       __cb__ int8_t* b,
                                       uint16_t m,
                                       uint16_t k,
                                       uint16_t n,
                                       uint8_t unit_flag,
                                       bool c_matrix_source,
                                       bool c_matrix_init_val)

__aicore__ inline void asc_mmad_sparse_sync(__cc__ int32_t* c,
                                            __ca__ int8_t* a,
                                            __cb__ int8_t* b,
                                            uint16_t m,
                                            uint16_t k,
                                            uint16_t n,
                                            uint8_t unit_flag,
                                            bool c_matrix_source,
                                            bool c_matrix_init_val)

参数说明

表1 参数说明

参数名输入/输出描述
c输出结果矩阵C在L0C Buffer中的起始地址,需按照1024字节对齐。
a输入左矩阵A在L0A Buffer中的起始地址,需按照512字节对齐。
b输入右矩阵B在L0B Buffer中的起始地址,需按照512字节对齐。
m输入左矩阵A和结果矩阵C的M维大小,取值范围为[0, 4095]。
k输入左矩阵A和右矩阵B的K维大小,取值范围为[0, 4095]。
n输入右矩阵B和结果矩阵C的N维大小,取值范围为[0, 4095]。
unit_flag输入UnitFlag控制参数。0表示关闭;2表示开启且执行后保持单元标志位;3表示开启且执行后更新单元标志位。
c_matrix_source输入c_matrix_init_val为false时,配置矩阵C的初始值是否来自BiasTable Buffer。
c_matrix_init_val输入配置是否将矩阵C的初始值设置为0。

返回值说明

流水类型

PIPE_M

约束说明

  • 本接口仅在AIC上生效,在AIV上调用将直接返回。
  • 原始稀疏矩阵B每4个元素中最多包含2个非零元素;如果存在3个或更多非零元素,则仅使用前2个非零元素。
  • mkn中的任意一个值为0时,接口将被视为NOP(空操作)。
  • 稀疏矩阵的数据准备、稠密算法及其他约束请参见asc_mmad_sparse

免责声明:本站内容由 asc-devkit 仓 master 分支自动编译生成,属于持续开发版本,可能存在缺陷,仅供预览与参考。如需稳定及商用资料,请查阅官方 昇腾社区