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

CANN Ascend C精度转换函数

__high2half2

【免费下载链接】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位填充到half2并返回结果。

函数原型

inline half2 __high2half2(const half2 x)

参数说明

表1参数说明

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

返回值说明

输入数据的的高16位填充到half2的结果。特殊值如下:

x值返回值
00
-0-0
nannan
infinf
-inf-inf
ASCRT_MAX_NORMAL_FP16ASCRT_MAX_NORMAL_FP16
-ASCRT_MAX_NORMAL_FP16-ASCRT_MAX_NORMAL_FP16

约束说明

需要包含的头文件

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

#include "simt_api/asc_fp16.h"

调用示例

  • SIMT编程场景:

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

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

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

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

http://www.cnnetsun.cn/news/3483539.html

相关文章:

  • C++进阶(07): 异常
  • 麒麟linux系统lv_vg逻辑卷磁盘配置与扩展
  • 从%格式化到f-strings:Flynt让你的Python代码更简洁、更高效
  • 深入解析McBSP时钟与电源管理:从Smart Idle到低功耗实战
  • PowerShell自动化部署方案:winget-install一键安装Windows包管理器终极指南
  • MADRL中的深度强化学习算法:Policy定义与训练流程解析
  • AWS Service Operator 代码生成器揭秘:如何扩展支持新的 AWS 服务
  • 抓包大师(Sniff Master)与其他抓包工具对比分析
  • Learning OpenCV 4 Computer Vision with Python 3:初学者快速入门指南与安装教程
  • gosql REPL使用详解:交互式数据库操作的终极技巧
  • Tachometer 最佳实践:从团队协作到生产部署的完整流程
  • 为什么顶尖Go团队已弃用VS Code?Cursor for Go的4大不可替代性(附Benchmark数据对比)
  • Notepad--跨平台文本编辑器深度剖析:解决中文编码与多文件处理的实战指南
  • CANN/asc-devkit:int转half精度转换函数
  • CANN/asc-devkit函数语法限制
  • libMesh社区贡献指南:如何参与开源有限元项目开发
  • pwa-install部署实战:从零到一的完整PWA应用安装流程
  • 如何高效掌握Path of Building:流放之路角色构建的专业进阶指南
  • Huihui-gemma-4-12B-coder-fable5-composer2.5-v1-abliterated-4bit-msq常见问题解答:新手必知的8个关键知识点
  • 开源文本到视频模型实战:Wan 2.7、HunyuanVideo 1.5和LTX-2.3快速入门教程
  • CANN/asc-devkit HCCL服务端类型配置
  • maven_crate项目架构揭秘:10个技巧高效管理Apache Aurora、Hadoop等大型依赖
  • CANN/asc-devkit编程接口概述
  • 强力释放C盘空间:FreeMove如何实现无痛文件迁移
  • VGG-T³未来路线图:NVIDIA如何规划下一代3D视觉模型发展
  • 探索QQgroup-annual-report-analyzer:10个你可能不知道的实用功能
  • CANN/asc-devkit:HostCPU自定义算子UserDefined配置
  • TI 18xx芯片时钟管理与中断路由实战:从CCC到EPWM同步与DMMSWINT配置
  • C++继承机制深度解析:从语法到多态与设计模式实战
  • 深入解析TI C2000 SCI寄存器:从原理到实战的嵌入式串口通信指南