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

CANN/asc-devkit SIMD bfloat16转fp4x2函数

asc_bfloat162e1m2x2

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

产品支持情况

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

功能说明

将bfloat16_t类型转化为fp4x2_e1m2_t类型,并支持多种舍入模式。

  • RINT舍入模式:四舍五入成双舍入
  • ROUND舍入模式:四舍五入舍入
  • FLOOR舍入模式:向负无穷舍入
  • CEIL舍入模式:向正无穷舍入
  • TRUNC舍入模式:向零舍入

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

函数原型

// RINT舍入模式,数据写入索引0的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rn(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // RINT舍入模式,数据写入索引1的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rn_v2(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // RINT舍入模式,数据写入索引2的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rn_v3(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // RINT舍入模式,数据写入索引3的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rn_v4(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // ROUND舍入模式,数据写入索引0的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rna(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // ROUND舍入模式,数据写入索引1的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rna_v2(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // ROUND舍入模式,数据写入索引2的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rna_v3(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // ROUND舍入模式,数据写入索引3的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rna_v4(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // FLOOR舍入模式,数据写入索引0的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rd(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // FLOOR舍入模式,数据写入索引1的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rd_v2(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // FLOOR舍入模式,数据写入索引2的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rd_v3(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // FLOOR舍入模式,数据写入索引3的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rd_v4(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // CEIL舍入模式,数据写入索引0的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_ru(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // CEIL舍入模式,数据写入索引1的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_ru_v2(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // CEIL舍入模式,数据写入索引2的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_ru_v3(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // CEIL舍入模式,数据写入索引3的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_ru_v4(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // TRUNC舍入模式,数据写入索引0的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rz(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // TRUNC舍入模式,数据写入索引1的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rz_v2(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // TRUNC舍入模式,数据写入索引2的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rz_v3(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask) // TRUNC舍入模式,数据写入索引3的位置 __simd_callee__ inline void asc_bfloat162e1m2x2_rz_v4(vector_fp4x2_e1m2_t& dst, vector_bfloat16_t src, vector_bool mask)

参数说明

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

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

返回值说明

流水类型

PIPE_V

约束说明

调用示例

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

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

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

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

相关文章:

  • 从零极点分布到系统行为:频率响应与稳定性的直观解析
  • 为什么LocateAnything-3B能成为视觉定位的终极解决方案:实战技巧与完整指南
  • Markoff社区与支持:获取帮助与分享使用经验
  • grunt-concurrent高级配置指南:limit、logConcurrentOutput、indent参数详解
  • TPM架构探秘(三):从可信根到主动免疫——TPM 2.0架构下的可信平台构建实践
  • 为什么选择vscode-remote-try-node?Node.js开发容器的10大优势与实际应用案例
  • Git状态可视化:深入解析Nicolas Gallagher dotfiles的bash提示符系统
  • Klipper 3D打印机固件终极指南:5个高级技巧解决打印质量难题
  • TestPilot:AI驱动测试生成的终极革命,如何让JavaScript/TypeScript测试自动化达到新高度?
  • 如何高效运用图数据库:3个核心技巧实战指南
  • LingChat多角色剧本系统:导入自定义剧情与场景的完整指南
  • LoRA技术解析:低秩适应原理与权重空间应用
  • CANN/asc-devkit:asc_lt_scalar矢量标量比较函数
  • GuangxiAICC/swinv2-tiny-patch4-window16-256模型配置详解:从patch_size到window_size的参数调优
  • 3大突破性设计重塑抖音内容生态管理体验
  • 2026年宁波GEO获客优化服务商调研:合规运营成核心 - 起跑123
  • xiaozhi-esp32:基于MCP协议的ESP32 AI聊天机器人技术解析
  • MC68F375 CTM9定时器DASM与PWMSM模块深度解析与实战指南
  • FaceFusion 3.6.0终极实战:5大策略实现影视级人脸融合效果
  • 内容驱动型网站必看:indie-hacker-tools-plus推荐的Next.js、Hono与Astro框架选型指南
  • Claude Code VS Code 插件集成(可视化使用)
  • 如何将手机变身专业卡车仪表盘:ETS2/ATS Telemetry Server完全指南
  • 超市秤盘电子表显示数字电子秤读数检测数据集VOC+YOLO格式104张10类别
  • H1st Trust模块深度解析:构建可信AI系统的3个关键要素
  • MC68HC908AS32A BDLC与CGM模块:硬件状态机与PLL时钟配置详解
  • 2026南京防水补漏维修团队实测盘点TOP4:南京业主房屋渗漏修缮靠谱选择 - 宅安选房屋修缮
  • 深入解析naught:Node.js集群API实现零停机部署的高可用架构原理
  • Aria下载任务管理:如何高效组织你的下载文件
  • CWM模型评估实战:在SWE-bench、LiveCodeBench和MATH基准上复现SOTA结果
  • 如何在iOS应用中快速集成MQTT客户端:CocoaMQTT完整指南