news 2026/7/17 8:32:55

CANN/Ascend C Gelu激活函数接口文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/Ascend C Gelu激活函数接口文档

Gelu

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

功能说明

在神经网络中,GELU是一个重要的激活函数,其灵感来源于Relu和Dropout,在激活中引入了随机正则的思想。计算公式如下:

,化简后可得

函数原型

  • 接口框架申请临时空间

    template <typename T, bool highPrecision = false, bool highPerformance = false> __aicore__ inline void Gelu(const LocalTensor<T>& dstLocal, const LocalTensor<T>& srcLocal, const uint32_t dataSize)
  • 通过sharedTmpBuffer入参传入临时空间

    template <typename T, bool highPrecision = false, bool highPerformance = false> __aicore__ inline void Gelu(const LocalTensor<T>& dstLocal, const LocalTensor<T>& srcLocal, const LocalTensor<uint8_t>& sharedTmpBuffer, const uint32_t dataSize)

参数说明

表1模板参数说明

参数名描述
T操作数的数据类型。支持的数据类型为:half、float。
highPrecision是否开启高精度模式,以提升运算准确度。默认值为false,表示不开启高精度模式。

注意:高精度模式只在half数据类型下开启后生效,该参数的取值不影响float数据类型下的接口精度和性能。
highPerformance是否开启高性能模式,以提升运算效率。默认值为false,表示不开启高性能模式。

注意:开启高性能模式相比于默认不开启高精度和高性能模式会有精度下降,同时开启高精度和高性能模式相比于仅开启高性能模式可能会有性能下降。 针对Ascend 950PR/Ascend 950DT,该参数保留但不生效,取值为true或者false,接口的精度和性能没有区别。

表2接口参数说明

参数名输入/输出描述
dstLocal输出目的操作数。

类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。
srcLocal输入源操作数。

类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。

源操作数的数据类型需要与目的操作数保持一致。
sharedTmpBuffer输入临时缓存。

类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。

用于接口内部复杂计算时存储中间变量,由开发者提供。

临时空间大小BufferSize的获取方式请参考GetGeluMaxMinTmpSize。
dataSize输入实际计算数据元素个数。

返回值说明

约束说明

  • 源操作数和目的操作数的Tensor空间可以复用。
  • 不支持sharedTmpBuffer与源操作数和目的操作数地址重叠。
  • 操作数地址对齐要求请参见通用地址对齐约束。
  • 仅支持输入shape为ND格式。

调用示例

// dstLocal: 存放Gelu计算结果的Tensor // srcLocal: 存放Gelu的输入Tensor // sharedTmpBuffer: 存放Gelu计算过程中临时缓存的Tensor // 接口框架申请临时空间,部分参与计算,需要参与计算的元素个数为32 AscendC::Gelu<srcType, false>(dstLocal, srcLocal, 32); // 通过sharedTmpBuffer入参传入临时空间,部分参与计算,需要参与计算的元素个数为32 AscendC::Gelu<srcType, false>(dstLocal, srcLocal, sharedTmpBuffer, 32);

结果示例如下:

输入数据(srcLocal): [-2.56 -2.395 -2.23 -2.066 -1.9 -1.735 -1.571 -1.406 -1.241 -1.076 -0.9116 -0.7466 -0.582 -0.417 -0.2522 -0.0874 0.0774 0.2423 0.407 0.572 0.737 0.902 1.066 1.231 1.396 1.561 1.726 1.891 2.055 2.22 2.385 2.55 ] 输出数据(dstLocal): [-0.01295471 -0.01953125 -0.02836609 -0.03991699 -0.05453491 -0.07196045 -0.09130859 -0.11254883 -0.13342285 -0.15185547 -0.16516113 -0.17004395 -0.16320801 -0.14111328 -0.10101318 -0.04067993 0.04107666 0.14428711 0.26782227 0.40942383 0.56689453 0.7363281 0.9135742 1.0966797 1.2822266 1.4677734 1.6533203 1.8349609 2.0136719 2.1914062 2.3632812 2.5390625 ]

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

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

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

电源设计中驱动电路的核心作用与设计要点

1. 驱动电路在电源设计中的核心地位 第一次接触电源设计时&#xff0c;我犯了个典型错误——把所有注意力都放在主功率拓扑上&#xff0c;结果样机调试时MOSFET频繁炸管。直到 mentor 指着驱动波形说"问题出在这里"&#xff0c;我才真正理解&#xff1a;驱动电路就像…

作者头像 李华
网站建设 2026/7/17 8:32:35

实用高效的Unity游戏自动翻译插件:5分钟快速汉化指南

实用高效的Unity游戏自动翻译插件&#xff1a;5分钟快速汉化指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因为语言障碍而错过精彩的Unity游戏&#xff1f;XUnity.AutoTranslator正是解决这…

作者头像 李华
网站建设 2026/7/17 8:31:49

Linux包管理利器YUM详解:从原理到企业实践

1. YUM包管理器概述 yum&#xff08;Yellowdog Updater Modified&#xff09;是Red Hat系列Linux发行版&#xff08;如CentOS、RHEL、Fedora&#xff09;中广泛使用的包管理工具。作为RPM包管理的前端工具&#xff0c;yum通过自动解决软件依赖关系&#xff0c;极大简化了软件安…

作者头像 李华
网站建设 2026/7/17 8:29:58

CANN/asc-devkit GetTensorC接口文档

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

作者头像 李华
网站建设 2026/7/17 8:29:52

uos-uwsgi-exporter核心组件剖析:理解指标收集器的工作原理

uos-uwsgi-exporter核心组件剖析&#xff1a;理解指标收集器的工作原理 【免费下载链接】uos-uwsgi-exporter A Prometheus exporter for uwsgi. 项目地址: https://gitcode.com/openeuler/uos-uwsgi-exporter 前往项目官网免费下载&#xff1a;https://ar.openeuler.or…

作者头像 李华
网站建设 2026/7/17 8:29:45

CANN/Ascend C Matmul模板参数

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

作者头像 李华