CANN/asc-devkit幂运算接口

发布时间:2026/9/9 12:44:12

CANN/asc-devkit幂运算接口 Power【免费下载链接】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 训练系列产品不支持功能说明实现按元素做幂运算功能提供3类接口处理逻辑如下函数原型Power(dstTensor, src0Tensor, src1Tensor)通过sharedTmpBuffer入参传入临时空间源操作数Tensor全部/部分参与计算template typename T, bool isReuseSource false, const PowerConfig config defaultPowerConfig __aicore__ inline void Power(const LocalTensorT dstTensor, const LocalTensorT src0Tensor, const LocalTensorT src1Tensor, const LocalTensoruint8_t sharedTmpBuffer, uint32_t calCount)源操作数Tensor全部参与计算template typename T, bool isReuseSource false, const PowerConfig config defaultPowerConfig __aicore__ inline void Power(const LocalTensorT dstTensor, const LocalTensorT src0Tensor, const LocalTensorT src1Tensor, const LocalTensoruint8_t sharedTmpBuffer)接口框架申请临时空间源操作数Tensor全部/部分参与计算template typename T, bool isReuseSource false, const PowerConfig config defaultPowerConfig __aicore__ inline void Power(const LocalTensorT dstTensor, const LocalTensorT src0Tensor, const LocalTensorT src1Tensor, uint32_t calCount)源操作数Tensor全部参与计算template typename T, bool isReuseSource false, const PowerConfig config defaultPowerConfig __aicore__ inline void Power(const LocalTensorT dstTensor, const LocalTensorT src0Tensor, const LocalTensorT src1Tensor)Power(dstTensor, src0Tensor, src1Scalar)通过sharedTmpBuffer入参传入临时空间源操作数Tensor全部/部分参与计算template typename T, bool isReuseSource false, const PowerConfig config defaultPowerConfig __aicore__ inline void Power(const LocalTensorT dstTensor, const LocalTensorT src0Tensor, const T src1Scalar, const LocalTensoruint8_t sharedTmpBuffer, uint32_t calCount)源操作数Tensor全部参与计算template typename T, bool isReuseSource false, const PowerConfig config defaultPowerConfig __aicore__ inline void Power(const LocalTensorT dstTensor, const LocalTensorT src0Tensor, const T src1Scalar, const LocalTensoruint8_t sharedTmpBuffer)接口框架申请临时空间源操作数Tensor全部/部分参与计算template typename T, bool isReuseSource false, const PowerConfig config defaultPowerConfig __aicore__ inline void Power(const LocalTensorT dstTensor, const LocalTensorT src0Tensor, const T src1Scalar, uint32_t calCount)源操作数Tensor全部参与计算template typename T, bool isReuseSource false, const PowerConfig config defaultPowerConfig __aicore__ inline void Power(const LocalTensorT dstTensor, const LocalTensorT src0Tensor, const T src1Scalar)Power(dstTensor, src0Scalar, src1Tensor)通过sharedTmpBuffer入参传入临时空间源操作数Tensor全部/部分参与计算template typename T, bool isReuseSource false, const PowerConfig config defaultPowerConfig __aicore__ inline void Power(const LocalTensorT dstTensor, const T src0Scalar, const LocalTensorT src1Tensor, const LocalTensoruint8_t sharedTmpBuffer, uint32_t calCount)源操作数Tensor全部参与计算template typename T, bool isReuseSource false, const PowerConfig config defaultPowerConfig __aicore__ inline void Power(const LocalTensorT dstTensor, const T src0Scalar, const LocalTensorT src1Tensor, const LocalTensoruint8_t sharedTmpBuffer)接口框架申请临时空间源操作数Tensor全部/部分参与计算template typename T, bool isReuseSource false, const PowerConfig config defaultPowerConfig __aicore__ inline void Power(const LocalTensorT dstTensor, const T src0Scalar, const LocalTensorT src1Tensor, uint32_t calCount)源操作数Tensor全部参与计算template typename T, bool isReuseSource false, const PowerConfig config defaultPowerConfig __aicore__ inline void Power(const LocalTensorT dstTensor, const T src0Scalar, const LocalTensorT src1Tensor)由于该接口的内部实现中涉及复杂的数学计算需要额外的临时空间来存储计算过程中的中间变量。临时空间支持接口框架申请和开发者通过sharedTmpBuffer入参传入两种方式。接口框架申请临时空间开发者无需申请但是需要预留临时空间的大小。通过sharedTmpBuffer入参传入使用该tensor作为临时空间进行处理接口框架不再申请。该方式开发者可以自行管理sharedTmpBuffer内存空间并在接口调用完成后复用该部分内存内存不会反复申请释放灵活性较高内存利用率也较高。接口框架申请的方式开发者需要预留临时空间通过sharedTmpBuffer传入的情况开发者需要为sharedTmpBuffer申请空间。临时空间大小BufferSize的获取方式如下通过GetPowerMaxMinTmpSize中提供的GetPowerMaxMinTmpSize接口获取需要预留空间的范围大小。参数说明表1模板参数说明参数名描述T操作数的数据类型。不同型号支持的数据类型请参考支持的数据类型。isReuseSource是否允许修改源操作数。该参数预留传入默认值false即可。config该参数仅支持Ascend 950PR/Ascend 950DT。Power计算的相关配置。此参数可选配PowerConfig类型具体定义如下方代码所示其中参数的含义为algo不同的数据类型支持的不同Power算法。该参数支持的取值如下INTRINSIC默认值。如果数据类型是整型INTRINSIC算法使用快速幂算法实现Power计算支持的数据类型为uint8_t、int8_t、uint16_t、int16_t、uint32_t、int32_t。如果数据类型是浮点数类型INTRINSIC算法按照公式Power(x, y) exp(y * ln(x))进行Power计算支持的数据类型为half、float。DOUBLE_FLOAT_TECHDOUBLE_FLOAT_TECH算法是高精度浮点数算法将源操作数的精度提升后按照公式Power(x, y) exp(y * ln(x))进行Power计算减少计算过程中的精度损失支持的数据类型为bfloat16_t、half、float。enum class PowerAlgo { INTRINSIC 0, DOUBLE_FLOAT_TECH, }; struct PowerConfig { PowerAlgo algo PowerAlgo::INTRINSIC; };表2接口参数说明参数名输入/输出描述dstTensor输出目的操作数。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。src0Tensor输入源操作数。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。源操作数的数据类型需要与目的操作数保持一致。src1Tensor输入源操作数。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。源操作数的数据类型需要与目的操作数保持一致。src0Scalar/src1Scalar输入源操作数类型为Scalar。源操作数的数据类型需要与目的操作数保持一致。sharedTmpBuffer输入临时内存空间。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。针对3个power接口不同输入数据类型情况下临时空间大小BufferSize的获取方式请参考GetPowerMaxMinTmpSize。calCount输入参与计算的元素个数。返回值说明无约束说明不支持源操作数与目的操作数地址重叠。对于Atlas 推理系列产品AI Core幂运算的指数必须小于231-1。操作数地址对齐要求请参见通用地址对齐约束。支持的数据类型Ascend 950PR/Ascend 950DT支持的数据类型为uint8_t、int8_t、uint16_t、int16_t、uint32_t、int32_t、half、bfloat16_t、float。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持的数据类型为half、float、int32_t。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持的数据类型为half、float、int32_t。Atlas 推理系列产品AI Core支持的数据类型为half、float、int32_t。调用示例完整的调用样例请参考Power样例。// dstLocal: 存放计算结果的Tensor // srcLocalExp: Power计算使用的指数Tensor // srcLocalBase: Power计算使用的底数Tensor // 使用srcLocalBase做底数对srcLocalExp中的全部元素做幂运算 AscendC::PowerT, false(dstLocal, srcLocalBase, srcLocalExp); // scalarValueBase: Power计算使用的底数 T scalarValueBase srcLocalBase.GetValue(0); // 使用同一个底数scalarValueBase对srcLocalExp中的全部元素做幂运算 AscendC::PowerT, false(dstLocal, scalarValueBase, srcLocalExp); // scalarValueExp: Power计算使用的指数 T scalarValueExp srcLocalExp.GetValue(0); // 使用同一个指数scalarValueExp对srcLocalBase中的全部元素做幂运算 AscendC::PowerT, false(dstLocal, srcLocalBase, scalarValueExp); // static constexpr AscendC::PowerConfig config { AscendC::PowerAlgo::DOUBLE_FLOAT_TECH }; // AscendC::PowersrcType, false, config(dstLocal, scalarValue, srcLocal2);AscendC::PowerT, false(dstLocal, srcLocalBase, srcLocalExp)示例数据如下输入数据(srcLocalBase): [2 3 4 5 6 7 8 9] 输入数据(srcLocalExp): [4 3 2 1 4 3 2 1] 输出数据(dstLocal): [16 27 16 5 1296 343 64 9]AscendC::PowerT, false(dstLocal, scalarValueBase, srcLocalExp)示例数据如下输入数据(scalarValueBase): 2 输入数据(srcLocalExp): [4 3 2 1 4 3 2 1] 输出数据(dstLocal): [16 8 4 2 16 8 4 2]AscendC::PowerT, false(dstLocal, srcLocalBase, scalarValueExp)示例数据如下输入数据(srcLocalBase): [2 3 4 5 6 7 8 9] 输入数据(scalarValueExp): 4 输出数据(dstLocal): [16 81 256 625 1296 2401 4096 6561]【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/8 22:21:04

分布式快照隔离的实现与代价:MVCC时间戳到全局事务ID的全链路

分布式快照隔离的实现与代价:MVCC时间戳到全局事务ID的全链路 一、Read Committed不够用,Serializable又太贵 隔离级别是事务型数据库最核心也最容易被误用的特性。Read Committed避免了脏读但允许不可重复读和幻读,在金融对账、库存扣减等场…

2026/8/30 18:22:44

Continue开源AI编程助手:JetBrains终极配置与实战指南

Continue开源AI编程助手:JetBrains终极配置与实战指南 【免费下载链接】continue open-source coding agent 项目地址: https://gitcode.com/GitHub_Trending/co/continue 还在为复杂代码调试而头疼?是否渴望一个能理解你编程意图的智能助手&…

2026/9/1 2:31:01

CANN/asc-devkit:bfloat16精度转换函数

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

2026/9/9 12:43:44

无线键鼠选购指南:从连接方式到手感,办公场景全解析

每天要在电脑前坐 6 小时以上的人,键鼠绝对不是“能用就行”的消耗品,而是影响手腕、颈椎和工作效率的生产力工具。最常见的后悔案例往往不是买贵了,而是买错了:有人为了追求轻薄买了超薄便携键盘,拿回工位敲了一天代码…

2026/9/9 12:43:44

固定资产管理软件全解析:从Excel到高效生命周期管理

固定资产管理软件这词儿,在不少企业里听着耳熟,但真要问起来,很多人第一反应是“不就是个记资产台账的Excel表吗?”我早些年也这么想过,直到自己亲手折腾过几套系统、帮朋友公司梳理过资产账,才明白这玩意儿…

2026/9/9 12:38:44

ruflo:AI本地开发的隐形运行时协调层解析

1. “ruflo”不是工具名,而是开发者社区里一个正在快速演化的概念代号 最近在多个技术社区的讨论帖、GitHub issue 评论区和 Discord 频道里,“ruflo”这个词频繁出现,但它既不是 npm 包名,也不是 GitHub 仓库名,更不是…

2026/9/8 7:15:10

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/8 7:15:10

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/9 0:00:48

MHS模型硬件标准:让大模型像调用软件一样控制物理设备

让Claude真正看着显微镜说“这个细胞形态不太对”,或者让大模型自己调一版机械臂的运动轨迹,这事儿听上去已经很接近科幻片了。但你真上手试一次就会发现,模型不缺智商,缺的是一个能插进显微镜、机械臂、激光控制器里的“通用插座…

2026/9/9 0:00:48

AI五大核心方向详解:从机器学习到大模型,零基础转行选哪条?

会有人告诉我,他想转行学AI,但打开招聘网站一看直接傻眼:机器学习、深度学习、自然语言处理、计算机视觉、大模型应用……满屏都是这些词,好像每个都会一点,又好像每个都离自己很远。还有人上来就问“学Python还是学Ja…

2026/9/9 0:00:49

从50行最小循环到生产级AI引擎:工程化改造全解析

直接说干货。这一章我写的不是那种"hello world跑通某个模型"的教程,而是把AI引擎当做一个真正要上线、要被人调用、要扛流量的系统来聊。从最初只有50行的最小循环,到能够承载生产流量的AI引擎,中间差的不是代码量,而是…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码