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

CANN/asc-devkit:half到uint8类型转换API

asc_half2uint8

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

产品支持情况

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

功能说明

将half类型数据转换为uint8类型,支持多种舍入模式:

  • RINT舍入模式:四舍六入五成双舍入

  • ROUND舍入模式:四舍五入舍入

  • FLOOR舍入模式:向负无穷舍入

  • CEIL舍入模式:向正无穷舍入

  • TRUNC舍入模式:向零舍入

  • 非饱和模式:

    • 输入数据超过输出类型最值时,结果被截断为目标格式的数据宽度。
    • 输入数据为+/-inf时,返回输出类型的最值。
    • 输入数据为nan时,返回0。
  • 饱和模式:

    • 输入数据超过输出类型最值时,返回输出类型的对应最值。
    • 输入数据为+/-inf时,返回输出类型的最值。
    • 输入数据为nan时,返回0。

函数原型

// FLOOR舍入模式,非饱和模式,数据写入索引为偶数的位置 __simd_callee__ inline void asc_half2uint8_rd(vector_uint8_t& dst, vector_half src, vector_bool mask) // FLOOR舍入模式,饱和模式,数据写入索引为偶数的位置 __simd_callee__ inline void asc_half2uint8_rd_sat(vector_uint8_t& dst, vector_half src, vector_bool mask) // FLOOR舍入模式,非饱和模式,数据写入索引为奇数的位置 __simd_callee__ inline void asc_half2uint8_rd_v2(vector_uint8_t& dst, vector_half src, vector_bool mask) // FLOOR舍入模式,饱和模式,数据写入索引为奇数的位置 __simd_callee__ inline void asc_half2uint8_rd_sat_v2(vector_uint8_t& dst, vector_half src, vector_bool mask) // RINT舍入模式,非饱和模式,数据写入索引为偶数的位置 __simd_callee__ inline void asc_half2uint8_rn(vector_uint8_t& dst, vector_half src, vector_bool mask) // RINT舍入模式,饱和模式,数据写入索引为偶数的位置 __simd_callee__ inline void asc_half2uint8_rn_sat(vector_uint8_t& dst, vector_half src, vector_bool mask) // RINT舍入模式,非饱和模式,数据写入索引为奇数的位置 __simd_callee__ inline void asc_half2uint8_rn_v2(vector_uint8_t& dst, vector_half src, vector_bool mask) // RINT舍入模式,饱和模式,数据写入索引为奇数的位置 __simd_callee__ inline void asc_half2uint8_rn_sat_v2(vector_uint8_t& dst, vector_half src, vector_bool mask) // ROUND舍入模式,非饱和模式,数据写入索引为偶数的位置 __simd_callee__ inline void asc_half2uint8_rna(vector_uint8_t& dst, vector_half src, vector_bool mask) // ROUND舍入模式,饱和模式,数据写入索引为偶数的位置 __simd_callee__ inline void asc_half2uint8_rna_sat(vector_uint8_t& dst, vector_half src, vector_bool mask) // ROUND舍入模式,非饱和模式,数据写入索引为奇数的位置 __simd_callee__ inline void asc_half2uint8_rna_v2(vector_uint8_t& dst, vector_half src, vector_bool mask) // ROUND舍入模式,饱和模式,数据写入索引为奇数的位置 __simd_callee__ inline void asc_half2uint8_rna_sat_v2(vector_uint8_t& dst, vector_half src, vector_bool mask) // CEIL舍入模式,非饱和模式,数据写入索引为偶数的位置 __simd_callee__ inline void asc_half2uint8_ru(vector_uint8_t& dst, vector_half src, vector_bool mask) // CEIL舍入模式,饱和模式,数据写入索引为偶数的位置 __simd_callee__ inline void asc_half2uint8_ru_sat(vector_uint8_t& dst, vector_half src, vector_bool mask) // CEIL舍入模式,非饱和模式,数据写入索引为奇数的位置 __simd_callee__ inline void asc_half2uint8_ru_v2(vector_uint8_t& dst, vector_half src, vector_bool mask) // CEIL舍入模式,饱和模式,数据写入索引为奇数的位置 __simd_callee__ inline void asc_half2uint8_ru_sat_v2(vector_uint8_t& dst, vector_half src, vector_bool mask) // TRUNC舍入模式,非饱和模式,数据写入索引为偶数的位置 __simd_callee__ inline void asc_half2uint8_rz(vector_uint8_t& dst, vector_half src, vector_bool mask) // TRUNC舍入模式,饱和模式,数据写入索引为偶数的位置 __simd_callee__ inline void asc_half2uint8_rz_sat(vector_uint8_t& dst, vector_half src, vector_bool mask) // TRUNC舍入模式,非饱和模式,数据写入索引为奇数的位置 __simd_callee__ inline void asc_half2uint8_rz_v2(vector_uint8_t& dst, vector_half src, vector_bool mask) // TRUNC舍入模式,饱和模式,数据写入索引为奇数的位置 __simd_callee__ inline void asc_half2uint8_rz_sat_v2(vector_uint8_t& dst, vector_half src, vector_bool mask)

参数说明

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

矢量数据寄存器和掩码寄存器的详细说明请参见reg数据类型定义.md。

返回值说明

流水类型

PIPE_V

约束说明

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

调用示例

vector_uint8_t dst; vector_half src; vector_bool mask = asc_create_mask_b16(PAT_ALL); asc_loadalign(src, src_addr); // src_addr是外部输入的UB内存空间地址。 asc_half2uint8_rd(dst, src, mask);

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

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

http://www.jsqmd.com/news/863858/

相关文章:

  • Octopress社区贡献指南:从fork到pull request的完整流程
  • benchmark-ips深度解析:如何精准测量Ruby代码性能
  • 强力中文聊天语料库:一站式解决AI对话系统数据难题
  • 深度解析:WinDiskWriter如何破解macOS制作Windows启动盘的技术壁垒
  • 基于浏览器锁定的 CypherLoc 恐吓软件攻击机理与防御研究
  • 长沙写真推荐,按这4个标准选不会踩坑 - 麦克杰
  • 智能音频文本同步:3步实现专业级时间轴对齐方案
  • eLabFTW终极指南:如何快速搭建开源电子实验笔记本系统
  • 终极虚拟手柄驱动方案:5分钟快速部署ViGEmBus完整指南
  • Sub高级用法:如何实现命令组合与脚本复用
  • 当AI成为黑客的“军师”:我们该如何反制智能化的网络钓鱼?
  • 如何轻松提取视频硬字幕:本地OCR字幕识别完整指南
  • 极速音频解密引擎:qmc-decoder突破性QMC格式转换技术
  • 免费学习awesome-made-by-brazilians中的编程语言:从入门到实战
  • 如何快速实现英雄联盟皮肤自定义:R3nzSkin国服特供版完整使用指南
  • Winutils深度解析:Hadoop Windows兼容性架构设计与企业级实践指南
  • Flet媒体处理实战指南:轻松构建音频视频播放应用
  • XUnity.AutoTranslator:Unity游戏实时翻译插件的架构解析与实战指南
  • 3分钟彻底解决:Windows电脑无法识别苹果设备的终极指南
  • 3分钟让GitHub变中文:免费完整的GitHub汉化插件终极指南
  • 2026淘宝客服外包公司排行:资质与服务实力评测 - 互联网科技品牌测评
  • Unity AI Chat Toolkit:5分钟打造智能对话应用的终极指南
  • Windows iPhone网络共享驱动:一键安装苹果驱动,告别设备管理器黄叹号!
  • Windows系统如何快速安装Apple USB网络共享驱动?终极解决方案揭秘
  • 海尔智能家居完整接入方案:HomeAssistant一站式管理终极指南
  • SpaceX冲刺2万亿估值IPO,93%价值竟将来自AI?
  • RTSPtoWebRTC高级应用:自定义流媒体处理和扩展开发
  • 5分钟上手R3nzSkin:英雄联盟国服免费换肤完全指南
  • BarrageGrab:如何构建企业级跨平台直播数据采集系统?
  • 如何定义AI Agent的权限