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

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),仅供参考

http://www.cnnetsun.cn/news/3392486.html

相关文章:

  • 计算机网络物理层核心概念与典型习题精讲(附详细解析)
  • ngx-ui主题与样式定制:快速创建品牌化UI界面的终极指南
  • 从理论到实践:基于LabVIEW与USRP的无线通信系统核心模块构建指南
  • Agent 每次调用工具都要问用户吗?Janus 揭示权限管理的三难困境
  • 提升用户体验:UITextField-Shake在表单验证中的最佳实践 [特殊字符]
  • Python ctypes调用C DLL实战:从基础到高级应用
  • OpenVINO版本升级指南:从旧版本迁移到2024.3.0在openEuler上的注意事项
  • 【限时解密】ChatGPT竞品技术底牌:MoE架构差异、上下文窗口压缩算法、推理加速芯片兼容性——一线厂商CTO亲授3个未公开参数
  • 终极Blender 3MF插件指南:如何完美解决3D打印格式兼容性问题
  • MMPlayerView:打造如YouTube般流畅的自定义AVPlayerLayer视频播放体验
  • DLPA100电源管理与电机驱动芯片在4K UHD显示系统中的应用与设计
  • PythonOcc进阶——基于零件形心的智能爆炸图生成与交互式UI设计
  • Unity游戏多语言实时翻译解决方案:XUnity.AutoTranslator深度解析
  • AI视频分析技术深度解析足球明星互动情感细节
  • 2026年Spine安装与配置全攻略:从下载到上手指南
  • S25FL256S Quad SPI Flash在FPGA中的高效驱动与实战优化
  • 从训练到部署:YOLOv5自定义模型在RK3588上的端到端实时摄像头应用
  • 如何扩展kaniko:自定义构建上下文和存储后端的实现方法
  • 基于MATLAB/Simulink的无刷直流电机双闭环调速系统建模与仿真实践
  • 从零构建Android远程控制工具:MediaProjection与WebSocket实战
  • 【环境管理实战】从零开始:用Miniconda搭建你的第一个Python隔离开发环境
  • 66AK2G12时钟与接口时序设计:从PLL配置到GPMC同步模式实战
  • Claude Code国产化适配指南:CC Switch+settings.json本地部署实战
  • Jekyll Compose社区生态:10个提升写作效率的相关工具和资源推荐
  • PyTumblr高级内容管理:队列、草稿、提交和标签搜索的Python自动化实现
  • 显卡性能调校的终极进化:NVIDIA Profile Inspector的深度哲学
  • ABAP 对接钉钉待办:从证书配置到任务创建实战
  • 嵌入式引脚复用配置实战:从TDA3手册到工程代码的完整指南
  • VASSAL引擎:3步解决远程桌面游戏痛点,开启你的虚拟桌游革命
  • 3步快速掌握Charge Limiter:MacBook电池寿命延长终极指南