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

cann/asc-devkit bfloat16高低位交换函数

__lowhigh2highlow

【免费下载链接】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 训练系列产品:不支持

功能说明

将输入数据的高低16位进行交换并返回。

函数原型

inline bfloat16x2_t __lowhigh2highlow(const bfloat16x2_t x)

参数说明

表1参数说明

参数名输入/输出描述
x输入源操作数。

返回值说明

输入数据的高低16位进行交换的结果。特殊值如下:

x值返回值
(0, -0)(-0, 0)
(nan, 正常值)(正常值, nan)
(inf, -inf)(-inf, inf)
(ASCRT_MAX_NORMAL_BF16, -ASCRT_MAX_NORMAL_BF16)(-ASCRT_MAX_NORMAL_BF16, ASCRT_MAX_NORMAL_BF16)
(nan, nan)(nan, nan)

约束说明

需要包含的头文件

使用该接口需要包含"simt_api/asc_bf16.h"头文件。

#include "simt_api/asc_bf16.h"

调用示例

  • SIMT编程场景:

    // 使用短向量可提升数据搬运效率 __aicore__ void simt_lowhigh2highlow(bfloat16x2_t* input, bfloat16x2_t* output, uint32_t input_total_length) { uint32_t idx = blockIdx.x * blockDim.x + threadIdx.x; // 每个线程处理1个bfloat16x2_t类型的数据,即2个bfloat16_t类型的数据,因此idx >= input_total_length / 2的线程不处理数据 if (idx > input_total_length / 2) { return; } output[idx] = __lowhigh2highlow(input[idx]); } __global__ __launch_bounds__(1024) void cast_kernel(bfloat16_t* input, bfloat16_t* output, uint32_t input_total_length) { simt_lowhigh2highlow((bfloat16x2_t*)input, (bfloat16x2_t*)output, input_total_length); }
  • SIMD与SIMT混合编程场景:

    // 使用短向量可提升数据搬运效率 __simt_vf__ __launch_bounds__(1024) inline void simt_lowhigh2highlow(__gm__ bfloat16x2_t* input, __gm__ bfloat16x2_t* output, uint32_t input_total_length) { uint32_t idx = blockIdx.x * blockDim.x + threadIdx.x; // 每个线程处理1个bfloat16x2_t类型的数据,即2个bfloat16_t类型的数据,因此idx >= input_total_length / 2的线程不处理数据 if (idx > input_total_length / 2) { return; } output[idx] = __lowhigh2highlow(input[idx]); } __global__ __vector__ void cast_kernel(__gm__ bfloat16_t* input, __gm__ bfloat16_t* output, uint32_t input_total_length) { asc_vf_call<simt_lowhigh2highlow>(dim3(1024), (__gm__ bfloat16x2_t*)input, (__gm__ bfloat16x2_t*)output, input_total_length); }

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

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

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

相关文章:

  • 从mpv内核到macOS原生体验:IINA如何重新定义现代视频播放器
  • 【小程序毕业设计】便民信息发布与检索管理系统的设计与实现 轻量化同城分类信息服务小程序的设计与实现(源码+文档+远程调试,全bao定制等)
  • Pikafish引擎NNUE文件加载失败深度解析与实战解决方案
  • 2026年4月最新测评:10款最好用的AI写小说工具(含避坑指南+实操体验)
  • LibVMI终极指南:虚拟化内省技术深度解析与实战应用
  • 如何用PlutoGrid实现键盘控制:桌面与Web端高效数据操作技巧
  • 高新区置换金品,大连明码计价,黄金回收不存在隐形扣费 - 日常财经早知道
  • Rust Rosetta Code数学挑战:从质数检测到斐波那契数列的完整实现
  • 2026辉县贵金属上门回收全攻略:四家正规连锁门店盘点,奢佳美本地多年老店领衔 - 黄金珠宝
  • Loop:终极Mac窗口管理指南,5分钟掌握高效工作流
  • 解锁PS4游戏存档管理的终极神器:Apollo Save Tool全攻略
  • CANN/asc-devkit LocalMemAllocator简介
  • PrusaSlicer完整安装指南:3个步骤打造专业3D打印工作流
  • FamilyBucket配置中心详解:统一配置管理与实时更新机制
  • 2026年嘉祥县正规牛场联系电话排行信息汇总 - 奔跑123
  • Windows 10原生运行Android应用终极指南:WSA-Windows-10完整解决方案
  • Windows网络调试终极工具:nc.exe完整指南与实用教程
  • Next.js billing app路线图:如何扩展Lemon Squeezy订阅功能
  • 丰台这6家金店太狠了璟安黄金奢品回收竟把回收价卷成白菜价 - 新芸鼎珠宝首饰
  • 2026 AI人工智能找工作平台深度盘点:靠谱服务商优劣解析,适配需求甄选避坑全指南 - 行业观察网
  • 【小程序毕业设计】宠物服务中心数据管理小程序的设计与实现 基于 SpringBoot + 微信小程序的宠物洗护诊疗综合管理系统(源码+文档+远程调试,全bao定制等)
  • DayZ终极单机模组:5分钟搭建你的专属末日世界
  • Steam Deck多系统引导终极指南:3分钟实现无缝系统切换
  • mkideal/cli最佳实践:构建可维护的CLI项目结构
  • 简单三步让老Mac焕发新生:OpenCore Legacy Patcher完整指南
  • Wonka操作符详解:10个最常用的流转换工具及实战示例
  • 4月最全测评:2026年最好用的10款AI写小说工具(含实操体验与避坑指南)
  • 仲景中医AI完整指南:免费开源的中医大语言模型终极教程
  • 2026亳州专升本高数提分难?库课考前重点提炼课,拆解历年高频考点套路 - 我叫小周
  • LLCOM串口调试工具:支持Lua脚本的智能硬件调试解决方案