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

CANN/asc-devkit: bfloat16x2绝对值函数

__habsx2

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

功能说明

计算输入bfloat16x2_t类型数据各分量的绝对值。

函数原型

bfloat16x2_t __habsx2(const bfloat16x2_t x)

参数说明

表1参数说明

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

返回值说明

输入数据各分量的绝对值。

输入返回值
±00
nannan
±infinf

约束说明

需要包含的头文件

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

#include "simt_api/asc_bf16.h"

调用示例

  • SIMT编程场景:

    // 使用短向量可提升数据搬运效率 __global__ __launch_bounds__(1024) void simt_habsx2(bfloat16_t* x, bfloat16_t* dst, 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; } bfloat16x2_t* input = (bfloat16x2_t*)x; bfloat16x2_t* out = (bfloat16x2_t*)dst; out[idx] = __habsx2(input[idx]); }
  • SIMD与SIMT混合编程场景:

    // 使用短向量可提升数据搬运效率 __simt_vf__ __launch_bounds__(1024) inline void simt_habsx2(__gm__ bfloat16x2_t* x, __gm__ bfloat16x2_t* dst, 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; } dst[idx] = __habsx2(x[idx]); } __global__ __vector__ void compute_kernel(__gm__ bfloat16_t* x, __gm__ bfloat16_t* dst, uint32_t input_total_length) { asc_vf_call<simt_habsx2>(dim3(1024), (__gm__ bfloat16x2_t*)x, (__gm__ bfloat16x2_t*)dst, input_total_length); }

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

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

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

相关文章:

  • 自动驾驶中的强化学习:关键技术与实践
  • 破解Home Assistant身份验证难题:hass-oidc-auth让SSO登录变得简单
  • Python数据科学:从基础到实战的完整指南
  • VagrantPress核心功能揭秘:为什么它是WordPress开发者的必备工具
  • CANN/asc-devkit:SoftmaxFlash接口
  • 暗黑破坏神2存档编辑器d2s-editor:免费可视化修改工具完整指南
  • 遇到分歧放缓争执节奏,平和交流远比强硬说教更利于彼此理解
  • 基于LLM与Playwright的AI浏览器智能体:从原理到工程实践
  • Windows WSL2部署vLLM推理框架实战指南
  • 计算机小程序毕设实战-宠物咖休闲服务预约系统的设计与实现 基于 SpringBoot + 微信小程序的猫咪主题小店预订小程序【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • CANN/asc-devkit Atanh临时缓冲区因子大小获取接口
  • 太仓 2026 年 7 月三类防水痛点解析 太仓正规漏水检测维修商家 - 苏易房屋修缮
  • Cursor Pro功能限制的终极解决方案:技术实现与最佳实践指南
  • CANN/asc-devkit TPipe初始化函数
  • Ubuntu 18.04 WiFi驱动问题排查与修复指南
  • TBAnnotationClustering入门教程:5分钟实现高效地图标注聚类
  • 微信本地数据库解密原理与实操:WechatDecrypt工具使用指南
  • 统好AI:依托全域数据闭环,落地企业可量化数字化价值
  • 2026南京坚持长期经营理念,名表回收以诚为先,江诗丹顿宝玑放心 - 资讯洞察员
  • 多串口5G网关在智慧水务监测管理系统的应用
  • CANN/asc-devkit Atan临时缓冲区因子大小获取接口文档
  • 从happy-lager学Craft CMS扩展开发:插件集成与自定义模块实战
  • 分布式文件系统的技术选型:CephFS、GlusterFS与JuiceFS的场景化对比分析
  • Ubuntu 20.04 LTS 初始配置与优化全指南
  • Racketscript核心功能揭秘:为什么它是Racket开发者的必备转译工具?
  • CANN/asc-devkit等待批量迭代完成接口
  • 统好AI:跳出碎片化陷阱,以一体化底座重塑企业数智逻辑
  • STM32与ESP32对比:嵌入式项目选型指南与仿生蝴蝶案例
  • TBAnnotationClustering核心组件解析:从QuadTree到AnnotationView的完整指南
  • J-space技术:通过Jacobian Lens窥探大型语言模型的内部思维机制