news 2026/7/16 14:08:01

CANN/asc-devkit浮点转BFloat16函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit浮点转BFloat16函数

asc_float2bfloat16

【免费下载链接】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"

将vector_float类型转换成vector_bfloat16_t类型,写入目的操作数的上半部分或下半部分,并支持多种舍入模式与饱和模式。

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

以asc_float2bfloat16_rd接口为例:

  • asc_float2bfloat16_rd:不饱和模式,写入目的操作数的上半部分。

  • asc_float2bfloat16_rd_sat:饱和模式,写入目的操作数的上半部分。

  • asc_float2bfloat16_rd_v2:不饱和模式,写入目的操作数的下半部分。

  • asc_float2bfloat16_rd_sat_v2:饱和模式,写入目的操作数的下半部分。

函数原型

// FLOOR舍入模式 __simd_callee__ inline void asc_float2bfloat16_rd(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_rd_sat(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_rd_v2(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_rd_sat_v2(vector_bfloat16_t& dst, vector_float src, vector_bool mask) // RINT舍入模式 __simd_callee__ inline void asc_float2bfloat16_rn(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_rn_sat(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_rn_v2(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_rn_sat_v2(vector_bfloat16_t& dst, vector_float src, vector_bool mask) // ROUND舍入模式 __simd_callee__ inline void asc_float2bfloat16_rna(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_rna_sat(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_rna_v2(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_rna_sat_v2(vector_bfloat16_t& dst, vector_float src, vector_bool mask) // CEIL舍入模式 __simd_callee__ inline void asc_float2bfloat16_ru(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_ru_sat(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_ru_v2(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_ru_sat_v2(vector_bfloat16_t& dst, vector_float src, vector_bool mask) // TRUNC舍入模式 __simd_callee__ inline void asc_float2bfloat16_rz(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_rz_sat(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_rz_v2(vector_bfloat16_t& dst, vector_float src, vector_bool mask) __simd_callee__ inline void asc_float2bfloat16_rz_sat_v2(vector_bfloat16_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_bfloat16_t dst; vector_float src; vector_bool mask; mask = asc_create_mask_b32(PAT_ALL); asc_float2bfloat16_rd(dst, src, mask); // FLOOR舍入模式,不饱和模式,将src转换成vector_bfloat16_t类型并写入dst上半部分 asc_float2bfloat16_rd_sat(dst, src, mask); // FLOOR舍入模式,饱和模式,将src转换成vector_bfloat16_t类型并写入dst上半部分 asc_float2bfloat16_rd_v2(dst, src, mask); // FLOOR舍入模式,不饱和模式,将src转换成vector_bfloat16_t类型并写入dst下半部分 asc_float2bfloat16_rd_sat_v2(dst, src, mask); // FLOOR舍入模式,饱和模式,将src转换成vector_bfloat16_t类型并写入dst下半部分

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

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

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

pam-watchid核心原理:揭秘Swift如何调用macOS生物识别API

pam-watchid核心原理:揭秘Swift如何调用macOS生物识别API 【免费下载链接】pam-watchid PAM plugin module that allows the Apple Watch to be used for authentication 项目地址: https://gitcode.com/gh_mirrors/pa/pam-watchid pam-watchid是一款创新的P…

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

Vue3后台系统实战指南:5个高效开发技巧深度解析

Vue3后台系统实战指南:5个高效开发技巧深度解析 【免费下载链接】vue-next-admin 🎉🎉🔥基于vue3.x 、Typescript、vite、Element plus等,适配手机、平板、pc 的后台开源免费模板库(vue2.x请切换vue-prev-a…

作者头像 李华
网站建设 2026/7/16 14:03:56

STM32矩阵运算性能优化:ARM DSP库实战与避坑指南

1. 为什么需要ARM DSP库做矩阵运算 第一次在STM32上实现卡尔曼滤波时,我手工编写了4x4矩阵乘法函数。测试发现计算一次需要2.3ms——这对于需要实时控制的无人机飞控简直是灾难。后来改用ARM DSP库的 arm_mat_mult_f32 函数,同样的计算仅需0.15ms&…

作者头像 李华
网站建设 2026/7/16 14:02:21

cuSignal故障排除手册:常见问题与解决方案大全

cuSignal故障排除手册:常见问题与解决方案大全 【免费下载链接】cusignal cuSignal - RAPIDS Signal Processing Library 项目地址: https://gitcode.com/gh_mirrors/cu/cusignal cuSignal是RAPIDS Signal Processing Library的核心组件,专为GPU加…

作者头像 李华