news 2026/7/15 8:06:08

CANN/asc-devkit SIMD向量减法API文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit SIMD向量减法API文档

asc_sub

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT

功能说明

头文件路径:"c_api/reg_compute/reg_vector.h"

根据mask对源操作数src0、src1进行按元素相减的操作,将结果写入目的操作数dst。 源操作数为uint32_t或int32_t时,提供带借位数据的接口,src0、src1相减时如果产生借位,在carry中对应位置每4bit的最低位写0,否则写1。

计算公式如下:

$$ dst_i = src0_i - src1_i $$

carry输出借位值示例说明:

数据类型是否借位示例说明
uint32_t数据类型不产生借位src0_i = 5, src1_i = 2
dst_i = src0_i - src1_i = 3
carry中对应位置4bit的最低位写1:carry_i = 1
uint32_t数据类型产生借位src0_i = 5, src1_i = 7
dst_i = src0_i - src1_i = -2
carry中对应位置4bit的最低位写0:carry_i = 0
int32_t数据类型不产生借位src0_i = 5, src1_i = 2
dst_i = src0_i - src1_i = 3
carry中对应位置4bit的最低位写1:carry_i = 1
int32_t数据类型产生借位src0_i = 5, src1_i = -7
dst_i = src0_i - src1_i = 12
carry中对应位置4bit的最低位写0:carry_i = 0

函数原型

  • 不带借位数据的接口

    __simd_callee__ inline void asc_sub(vector_uint8_t& dst, vector_uint8_t src0, vector_uint8_t src1, vector_bool mask) __simd_callee__ inline void asc_sub(vector_int8_t& dst, vector_int8_t src0, vector_int8_t src1, vector_bool mask) __simd_callee__ inline void asc_sub(vector_uint16_t& dst, vector_uint16_t src0, vector_uint16_t src1, vector_bool mask) __simd_callee__ inline void asc_sub(vector_int16_t& dst, vector_int16_t src0, vector_int16_t src1, vector_bool mask) __simd_callee__ inline void asc_sub(vector_half& dst, vector_half src0, vector_half src1, vector_bool mask) __simd_callee__ inline void asc_sub(vector_bfloat16_t& dst, vector_bfloat16_t src0, vector_bfloat16_t src1, vector_bool mask) __simd_callee__ inline void asc_sub(vector_uint32_t& dst, vector_uint32_t src0, vector_uint32_t src1, vector_bool mask) __simd_callee__ inline void asc_sub(vector_int32_t& dst, vector_int32_t src0, vector_int32_t src1, vector_bool mask) __simd_callee__ inline void asc_sub(vector_float& dst, vector_float src0, vector_float src1, vector_bool mask)
  • 带借位数据的接口

    __simd_callee__ inline void asc_sub(vector_bool& carry, vector_uint32_t& dst, vector_uint32_t src0, vector_uint32_t src1, vector_bool mask) __simd_callee__ inline void asc_sub(vector_bool& carry, vector_int32_t& dst, vector_int32_t src0, vector_int32_t src1, vector_bool mask)

参数说明

参数名输入/输出描述
carry输出目的借位值(掩码寄存器)。
dst输出目的操作数(矢量数据寄存器)。
src0输入源操作数0(矢量数据寄存器)。
src1输入源操作数1(矢量数据寄存器)。
mask输入源操作数掩码(掩码寄存器)。用于指示在计算过程中哪些元素参与计算。对应位置为1时参与计算,为0时不参与计算。mask未筛选的元素在输出中置零。

矢量数据寄存器和掩码寄存器的详细说明请参见data_type_definition.md。

返回值说明

流水类型

PIPE_V

约束说明

调用示例

vector_half dst; vector_half src0; vector_half src1; vector_bool mask = asc_create_mask_b16(PAT_ALL); asc_loadalign(src0, src0_addr); // src0_addr是外部输入的UB内存空间地址。 asc_loadalign(src1, src1_addr); // src1_addr是外部输入的UB内存空间地址。 // mask为源操作数掩码 asc_sub(dst, src0, src1, mask);

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

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

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

计算机网络物理层核心概念与典型习题精讲(附详细解析)

1. 物理层在计算机网络体系中的定位物理层是OSI七层模型和TCP/IP四层模型中最底层的基础设施,相当于网络通信的"高速公路路基"。它不关心数据的具体含义,只负责将比特流从一个节点搬运到另一个节点。就像快递员不需要知道包裹里装的是什么&…

作者头像 李华
网站建设 2026/7/15 8:03:50

ngx-ui主题与样式定制:快速创建品牌化UI界面的终极指南

ngx-ui主题与样式定制:快速创建品牌化UI界面的终极指南 【免费下载链接】ngx-ui 🚀 Style and Component Library for Angular 项目地址: https://gitcode.com/gh_mirrors/ng/ngx-ui ngx-ui是一个强大的Angular组件和样式库,由Swimlan…

作者头像 李华
网站建设 2026/7/15 8:03:06

从理论到实践:基于LabVIEW与USRP的无线通信系统核心模块构建指南

1. 初识LabVIEW与USRP的无线通信系统第一次接触LabVIEW和USRP时,我完全被这种图形化编程与软件无线电的结合方式震撼到了。作为一个通信工程专业的学生,以前只能在课本上看到的调制解调、信道编码等概念,现在居然可以通过拖拽图标就能实现&am…

作者头像 李华
网站建设 2026/7/15 8:02:59

Agent 每次调用工具都要问用户吗?Janus 揭示权限管理的三难困境

未来的 Agent 安全,不只是要检测提示注入,也不只是要给工具加权限开关。更重要的是建立一套能够理解上下文、约束工具行为、管理用户授权、记录执行链路的权限决策层。Agent 的安全问题,正在从“模型说了什么”转向“模型做了什么”。当 Agen…

作者头像 李华
网站建设 2026/7/15 8:00:16

Python ctypes调用C DLL实战:从基础到高级应用

1. 项目概述与核心价值在Python生态中,我们常常会遇到一个场景:手头有一个用C语言编写的高性能算法库、一个硬件厂商提供的设备驱动,或者一个历史遗留的Win32 API封装,它们都被编译成了动态链接库(DLL,在Li…

作者头像 李华