news 2026/7/16 22:25:47

CANN/Ascend C SIMD浮点转整型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/Ascend C SIMD浮点转整型

asc_float2int16

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

产品支持情况

  • 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/reg_compute/reg_convert.h"

将float类型转化为int16_t类型,并支持多种舍入模式,饱和/非饱和模式。

关于舍入模式和饱和/非饱和模式的详细说明,请参见舍入模式。

由于源操作数与目的操作数类型位宽比为2:1,写入数据时需要将一个VL大小的数据分为两部分,根据不同接口选取索引0或者索引1。

函数原型

// RINT舍入模式,非饱和模式,数据写入索引为0的位置 __simd_callee__ inline void asc_float2int16_rn(vector_int16_t& dst, vector_float src, vector_bool mask) // RINT舍入模式,饱和模式,数据写入索引为0的位置 __simd_callee__ inline void asc_float2int16_rn_sat(vector_int16_t& dst, vector_float src, vector_bool mask) // RINT舍入模式,非饱和模式,数据写入索引为1的位置 __simd_callee__ inline void asc_float2int16_rn_v2(vector_int16_t& dst, vector_float src, vector_bool mask) // RINT舍入模式,饱和模式,数据写入索引为1的位置 __simd_callee__ inline void asc_float2int16_rn_sat_v2(vector_int16_t& dst, vector_float src, vector_bool mask) // ROUND舍入模式,非饱和模式,数据写入索引为0的位置 __simd_callee__ inline void asc_float2int16_rna(vector_int16_t& dst, vector_float src, vector_bool mask) // ROUND舍入模式,饱和模式,数据写入索引为0的位置 __simd_callee__ inline void asc_float2int16_rna_sat(vector_int16_t& dst, vector_float src, vector_bool mask) // ROUND舍入模式,非饱和模式,数据写入索引为1的位置 __simd_callee__ inline void asc_float2int16_rna_v2(vector_int16_t& dst, vector_float src, vector_bool mask) // ROUND舍入模式,饱和模式,数据写入索引为1的位置 __simd_callee__ inline void asc_float2int16_rna_sat_v2(vector_int16_t& dst, vector_float src, vector_bool mask) // FLOOR舍入模式,非饱和模式,数据写入索引为0的位置 __simd_callee__ inline void asc_float2int16_rd(vector_int16_t& dst, vector_float src, vector_bool mask) // FLOOR舍入模式,饱和模式,数据写入索引为0的位置 __simd_callee__ inline void asc_float2int16_rd_sat(vector_int16_t& dst, vector_float src, vector_bool mask) // FLOOR舍入模式,非饱和模式,数据写入索引为1的位置 __simd_callee__ inline void asc_float2int16_rd_v2(vector_int16_t& dst, vector_float src, vector_bool mask) // FLOOR舍入模式,饱和模式,数据写入索引为1的位置 __simd_callee__ inline void asc_float2int16_rd_sat_v2(vector_int16_t& dst, vector_float src, vector_bool mask) // CEIL舍入模式,非饱和模式,数据写入索引为0的位置 __simd_callee__ inline void asc_float2int16_ru(vector_int16_t& dst, vector_float src, vector_bool mask) // CEIL舍入模式,饱和模式,数据写入索引为0的位置 __simd_callee__ inline void asc_float2int16_ru_sat(vector_int16_t& dst, vector_float src, vector_bool mask) // CEIL舍入模式,非饱和模式,数据写入索引为1的位置 __simd_callee__ inline void asc_float2int16_ru_v2(vector_int16_t& dst, vector_float src, vector_bool mask) // CEIL舍入模式,饱和模式,数据写入索引为1的位置 __simd_callee__ inline void asc_float2int16_ru_sat_v2(vector_int16_t& dst, vector_float src, vector_bool mask) // TRUNC舍入模式,非饱和模式,数据写入索引为0的位置 __simd_callee__ inline void asc_float2int16_rz(vector_int16_t& dst, vector_float src, vector_bool mask) // TRUNC舍入模式,饱和模式,数据写入索引为0的位置 __simd_callee__ inline void asc_float2int16_rz_sat(vector_int16_t& dst, vector_float src, vector_bool mask) // TRUNC舍入模式,非饱和模式,数据写入索引为1的位置 __simd_callee__ inline void asc_float2int16_rz_v2(vector_int16_t& dst, vector_float src, vector_bool mask) // TRUNC舍入模式,饱和模式,数据写入索引为1的位置 __simd_callee__ inline void asc_float2int16_rz_sat_v2(vector_int16_t& dst, vector_float src, vector_bool mask)

参数说明

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

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

返回值说明

流水类型

PIPE_V

约束说明

  • 开启饱和模式和非饱和模式时,需配置ctrl寄存器,ctrl寄存器的详细说明请参见asc_set_ctrl.md。

调用示例

vector_float src; vector_int16_t dst; vector_bool mask; mask = asc_create_mask_b32(PAT_ALL); asc_float2int16_rn(dst, src, mask);

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

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

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

【单片机毕业设计】基于 STM32 的带温度补偿超声波测距报警系统设计,基于 STM32 单片机的可调阈值超声波防撞预警装置开发(014202)

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能基础功能核心功能辅助功能技术路线项目演示关于我们项目案例源码获取博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者&…

作者头像 李华
网站建设 2026/7/16 22:23:41

【单片机毕业设计】基于 STM32/51 单片机的公交 GPS 自动语音报站系统设计与实现,基于 STM32/51 单片机的车载手动与自动双模语音报站装置设计(014602)

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能一、核心基础控制功能二、信息显示功能三、模式切换管理功能四、手动报站功能五、GPS 自动报站功能六、参数配置功能七、智能语音播报功能技术路线项目演示关于我们项目案例源码获取博主介绍:✌️…

作者头像 李华
网站建设 2026/7/16 22:16:49

头歌 实战入门 - 分布式版本控制核心操作

1. Git入门:从零开始掌握分布式版本控制 第一次接触Git时,我完全被那些晦涩的术语搞懵了——仓库、暂存区、提交、分支... 直到把代码改得一团糟却无法回退时,才真正明白版本控制的重要性。Git就像代码的时光机,能让你随时回到任意…

作者头像 李华
网站建设 2026/7/16 22:16:05

传感器核心参数实战解析:从理论带宽到工程精度

1. 带宽:传感器动态性能的"高速公路"带宽这个参数,我第一次接触时也犯迷糊。直到有次用加速度计测电机振动,明明肉眼可见的剧烈抖动,传感器输出却像温顺的小绵羊——这才深刻体会到带宽的重要性。带宽就像高速公路的车道…

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

Deep-Live-Cam终极指南:3步实现专业级实时AI换脸

Deep-Live-Cam终极指南:3步实现专业级实时AI换脸 【免费下载链接】Deep-Live-Cam real time face swap and one-click video deepfake with only a single image 项目地址: https://gitcode.com/GitHub_Trending/de/Deep-Live-Cam Deep-Live-Cam是一款革命性…

作者头像 李华