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

CANN/ops-nn自适应平均池化3D反向计算

aclnnAdaptiveAvgPool3dBackward【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn产品支持情况 查看源码产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品×Atlas 推理系列产品√Atlas 训练系列产品√功能说明aclnnAdaptiveAvgPool3d 的反向计算。函数原型每个算子分为两段式接口必须先调用“aclnnAdaptiveAvgPool3dBackwardGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器再调用“aclnnAdaptiveAvgPool3dBackward”接口执行计算。aclnnStatus aclnnAdaptiveAvgPool3dBackwardGetWorkspaceSize( const aclTensor *gradOutput, const aclTensor *self, aclTensor *out, uint64_t *workspaceSize, aclOpExecutor **executor)aclnnStatus aclnnAdaptiveAvgPool3dBackward( void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)aclnnAdaptiveAvgPool3dBackwardGetWorkspaceSize参数说明参数名输入/输出描述使用说明数据类型数据格式维度(shape)非连续TensorgradOutput输入当前节点的梯度。数据类型与self一致NC维度和self保持一致。FLOAT32、FLOAT16、BFLOAT16NCDHW、ND4-5√self输入叶子节点。-FLOAT32、FLOAT16、BFLOAT16NCDHW、ND4-5√out输出对应了输入叶子节点的梯度。-FLOAT32、FLOAT16、BFLOAT16NCDHW、ND4-5√workspaceSize输出返回需要在Device侧申请的workspace大小。-----executor输出返回op执行器包含了算子计算流程。-----返回值aclnnStatus返回状态码具体参见aclnn返回码。第一段接口完成入参校验出现以下场景时报错返回码错误码描述ACLNN_ERR_PARAM_NULLPTR161001传入的gradOutput、self或out是空指针。ACLNN_ERR_PARAM_INVALID161002gradOutput和self的数据类型和数据格式不在支持的范围之内。gradOutput、self和out数据类型不一致。gradOutput、self和out的维数不等于4或5。gradOutput、self和out的shape不匹配。gradOutput或self的shape的某一维不大于0。gradOutput和self的数据格式不一致。NC维度不一致。Ascend 950PR/Ascend 950DT: gradOutputself的shapeN轴取值可以为0aclnnAdaptiveAvgPool3dBackward参数说明参数名输入/输出描述workspace输入在Device侧申请的workspace内存地址。workspaceSize输入在Device侧申请的workspace大小由第一段接口aclnnAdaptiveAvgPool3dBackwardGetWorkspaceSize获取。executor输入op执行器包含了算子计算流程。stream输入指定执行任务的Stream。返回值aclnnStatus返回状态码具体参见aclnn返回码。约束说明确定性计算aclnnAdaptiveAvgPool3dBackward默认非确定性实现支持通过aclrtCtxSetSysParamOpt开启确定性。调用示例示例代码如下仅供参考具体编译和执行过程请参考编译与运行样例。#include cstdio #include iostream #include vector #include math.h #include acl/acl.h #include aclnnop/aclnn_adaptive_avg_pool3d_backward.h #define CHECK_RET(cond, return_expr) \ do { \ if (!(cond)) { \ return_expr; \ } \ } while (0) #define LOG_PRINT(message, ...) \ do { \ printf(message, ##__VA_ARGS__); \ } while (0) int64_t GetShapeSize(const std::vectorint64_t shape) { int64_t shapeSize 1; for (auto i : shape) { shapeSize * i; } return shapeSize; } int Init(int32_t deviceId, aclrtStream* stream) { // 固定写法资源初始化 auto ret aclInit(nullptr); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclInit failed. ERROR: %d\n, ret); return ret); ret aclrtSetDevice(deviceId); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclrtSetDevice failed. ERROR: %d\n, ret); return ret); ret aclrtCreateStream(stream); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclrtCreateStream failed. ERROR: %d\n, ret); return ret); return 0; } template typename T int CreateAclTensor(const std::vectorT hostData, const std::vectorint64_t shape, void** deviceAddr, aclDataType dataType, aclTensor** tensor) { auto size GetShapeSize(shape) * sizeof(T); // 调用aclrtMalloc申请device侧内存 auto ret aclrtMalloc(deviceAddr, size, ACL_MEM_MALLOC_HUGE_FIRST); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclrtMalloc failed. ERROR: %d\n, ret); return ret); // 调用aclrtMemcpy将host侧数据拷贝到device侧内存上 ret aclrtMemcpy(*deviceAddr, size, hostData.data(), size, ACL_MEMCPY_HOST_TO_DEVICE); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclrtMemcpy failed. ERROR: %d\n, ret); return ret); // 计算连续tensor的strides std::vectorint64_t strides(shape.size(), 1); for (int64_t i shape.size() - 2; i 0; i--) { strides[i] shape[i 1] * strides[i 1]; } // 调用aclCreateTensor接口创建aclTensor *tensor aclCreateTensor(shape.data(), shape.size(), dataType, strides.data(), 0, aclFormat::ACL_FORMAT_ND, shape.data(), shape.size(), *deviceAddr); return 0; } int main() { // 1. device/stream初始化参考acl API手册 int32_t deviceId 0; aclrtStream stream; auto ret Init(deviceId, stream); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(Init acl failed. ERROR: %d\n, ret); return ret); // 2. 构造输入与输出 std::vectorint64_t yGradShape {2, 2, 1, 1, 2}; std::vectorint64_t xShape {2, 2, 1, 1, 4}; std::vectorint64_t xGradShape {2, 2, 1, 1, 4}; void* yGradDeviceAddr nullptr; void* xDeviceAddr nullptr; void* xGradDeviceAddr nullptr; aclTensor* yGrad nullptr; aclTensor* x nullptr; aclTensor* xGrad nullptr; std::vectorfloat yGradHostData {1, 2, 3, 4, 5, 6, 7, 8}; std::vectorfloat xHostData(GetShapeSize(xShape), 1); std::vectorfloat xGradHostData(16, 0); // 创建yGrad aclTensor ret CreateAclTensor(yGradHostData, yGradShape, yGradDeviceAddr, aclDataType::ACL_FLOAT, yGrad); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建x aclTensor ret CreateAclTensor(xHostData, xShape, xDeviceAddr, aclDataType::ACL_FLOAT, x); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建xGrad aclTensor ret CreateAclTensor(xGradHostData, xGradShape, xGradDeviceAddr, aclDataType::ACL_FLOAT, xGrad); CHECK_RET(ret ACL_SUCCESS, return ret); // 3. 调用CANN算子库API uint64_t workspaceSize 0; aclOpExecutor* executor; // 调用aclnnAdaptiveAvgPool3dBackward第一段接口 ret aclnnAdaptiveAvgPool3dBackwardGetWorkspaceSize(yGrad, x, xGrad, workspaceSize, executor); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclnnAdaptiveAvgPool3dBackwardGetWorkspaceSize failed. ERROR: %d\n, ret); return ret); // 根据第一段接口计算出的workspaceSize申请device内存 void* workspaceAddr nullptr; if (workspaceSize 0) { ret aclrtMalloc(workspaceAddr, workspaceSize, ACL_MEM_MALLOC_HUGE_FIRST); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(allocate workspace failed. ERROR: %d\n, ret); return ret); } // 调用aclnnAdaptiveAvgPool3dBackward二段接口 ret aclnnAdaptiveAvgPool3dBackward(workspaceAddr, workspaceSize, executor, stream); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclnnAdaptiveAvgPool3dBackward failed. ERROR: %d\n, ret); return ret); // 4. 同步等待任务执行结束 ret aclrtSynchronizeStream(stream); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclrtSynchronizeStream failed. ERROR: %d\n, ret); return ret); // 5. 获取输出的值将device侧内存上的结果拷贝至host侧 auto size GetShapeSize(xGradShape); std::vectorfloat resultData(size, 0); ret aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), xGradDeviceAddr, size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(copy result from device to host failed. ERROR: %d\n, ret); return ret); for (int64_t i 0; i size; i) { LOG_PRINT(result[%ld] is: %f\n, i, resultData[i]); } // 6. 释放aclTensor aclDestroyTensor(yGrad); aclDestroyTensor(x); aclDestroyTensor(xGrad); // 7. 释放Device资源需要根据具体API的接口定义修改 aclrtFree(yGradDeviceAddr); aclrtFree(xDeviceAddr); aclrtFree(xGradDeviceAddr); if (workspaceSize 0) { aclrtFree(workspaceAddr); } aclrtDestroyStream(stream); aclrtResetDevice(deviceId); aclFinalize(); return 0; }【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

CANN/ops-nn自适应平均池化3D反向计算

aclnnAdaptiveAvgPool3dBackward 【免费下载链接】ops-nn 本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-nn 产品支持情况 📄 查看源码 产品是否支持Ascend 950PR/Ascend 950DT√…...

CANN/asc-devkit:设置单核输出形状API

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

3步快速部署GitHub中文化插件:告别英文界面的烦恼

3步快速部署GitHub中文化插件:告别英文界面的烦恼 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 你是否曾经因为GitHub的…...

CANN昇腾算子开发套件

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

长期项目使用Taotoken按Token计费模式带来的成本优化体感

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期项目使用Taotoken按Token计费模式带来的成本优化体感 1. 项目背景与计费模式选择 我们团队维护着一个中等规模的AI应用项目&a…...

智慧树刷课插件:3个核心功能帮你告别重复点击,学习效率提升300%

智慧树刷课插件:3个核心功能帮你告别重复点击,学习效率提升300% 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台繁琐的手动操作…...

ustcthesis与Overleaf完美结合:云端LaTeX写作新体验

ustcthesis与Overleaf完美结合:云端LaTeX写作新体验 【免费下载链接】ustcthesis LaTeX template for USTC thesis 项目地址: https://gitcode.com/gh_mirrors/us/ustcthesis 在当今数字化写作时代,ustcthesis作为中国科学技术大学官方的学位论文…...

如何快速解密网易云音乐NCM文件:5步完成格式转换的完整指南

如何快速解密网易云音乐NCM文件:5步完成格式转换的完整指南 【免费下载链接】ncmdump ncmdump - 网易云音乐NCM转换 项目地址: https://gitcode.com/gh_mirrors/ncmdu/ncmdump 还在为网易云音乐的NCM加密格式烦恼吗?想要在任意播放器上畅听你收藏…...

Yeti性能优化技巧:10个方法提升威胁情报处理效率

Yeti性能优化技巧:10个方法提升威胁情报处理效率 【免费下载链接】yeti Your Everyday Threat Intelligence 项目地址: https://gitcode.com/gh_mirrors/ye/yeti Yeti是一个强大的威胁情报平台,专门为网络安全团队设计,旨在连接CTI&am…...

Notify.js性能优化指南:提升通知系统的响应速度

Notify.js性能优化指南:提升通知系统的响应速度 【免费下载链接】notifyjs Notify.js - A simple, versatile notification library 项目地址: https://gitcode.com/gh_mirrors/no/notifyjs 在现代Web应用中,通知系统作为用户交互的重要组成部分&…...

CANN/asc-devkit make_int2向量构造函数

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

XUnity.AutoTranslator完整指南:让Unity游戏告别语言障碍的终极解决方案

XUnity.AutoTranslator完整指南:让Unity游戏告别语言障碍的终极解决方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因为语言不通而错过精彩的日本RPG游戏?是否面对欧…...

如何免费解密网易云音乐NCM文件:终极指南释放你的音乐自由

如何免费解密网易云音乐NCM文件:终极指南释放你的音乐自由 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾在网易云音乐下载了心爱的歌曲,却发现只能在特定客户端播放?那些加密的NCM格式文…...

从脚本运维到AI自治运维,全链路可观测性重构,SITS 2026标准下9类典型故障自动根因定位率突破91.7%

更多请点击: https://intelliparadigm.com 第一章:AI原生DevOps:SITS 2026开发运维一体化新范式 AI原生DevOps并非传统CI/CD管道的简单增强,而是以大模型驱动的智能体(Agent)为核心,重构软件交…...

【AI原生产品规划终极指南】:2026奇点大会PM必修的7大认知跃迁与3个落地陷阱规避法

AI原生产品规划:2026奇点智能技术大会产品经理必修课 更多请点击: https://intelliparadigm.com 第一章:从AI赋能到AI原生:一场范式革命的底层认知重构 传统AI赋能模式将模型作为工具嵌入既有系统——例如在CRM中调用NLP接口分析…...

线性码基础与最优电路合成技术解析

1. 线性码基础与错误控制原理线性码作为信道编码理论的核心内容,在现代数字通信和存储系统中发挥着不可替代的作用。这类编码通过在原始数据中添加精心设计的冗余信息,使系统能够检测和纠正传输过程中产生的随机错误。从数学角度看,线性码是向…...

谱域图算子与边缘计算优化实践

1. 图算子技术背景与核心价值图神经网络(GNN)在工业场景的应用正面临两大核心挑战:一是传统消息传递机制在深层网络中的过平滑现象,二是边缘设备上的计算资源限制。我们团队在热交换器监测项目中首次发现,当GNN层数超过…...

[具身智能-659]:ROS2 与人类大脑神经系统 完整类比 + 异同对比总结

一、整体核心类比ROS2 就是人工机器人版的「中枢神经系统」机器人的硬件架构、节点分工、消息通信、协同逻辑,完全复刻人脑神经工作模式:CPU/GPU计算单元为算法节点 大脑皮层(认知、推理、决策、多模态理解)MCU 传感器 / 运动节点…...

【信息科学与工程学】【人工智能】【数字孪生】【游戏科学】主要数学模型-第九篇 计算神经科学

认知神经科学的几何、拓扑与计算建模框架 这是一个深度交叉领域的问题,我将从几何表示、拓扑结构、动力学模型和仿真算法四个维度,系统梳理从神经元到全脑的计算神经科学建模方法。 一、神经元与连接的几何表示模型 神经元形态的表示: a) 线表示:将神经元的树突和轴突表示…...

【信息科学与工程学】【人工智能】【数字孪生】【游戏科学】主要数学模型-第八篇 计算血液学

计算血液学:理论与数学框架全体系 计算血液学是生物物理学、流体力学和反应动力学的交叉领域,研究血液作为多相智能流体的物理与数学原理。以下是从宏观血流到分子机制的全尺度数学模型体系。 一、血液流变学基础 模型类别 核心方程/定义 参数符号 物理意义 典型值范围 1. …...

从 CDS 到服务契约,读懂 ABAP Cloud 的 Model-Driven Architecture

很多做 RAP 的同学,在 ADT 里第一次同时创建 CDS view entity、behavior definition、service definition、service binding 的时候,直觉往往是,为什么对象一下子变这么多。等项目真正推进到发票、销售订单、主数据维护、审批动作、事件集成这些场景,就会慢慢体会到,这套做…...

把边界立起来,理解 ABAP Cloud 的几根主梁

项目里最让人头疼的时刻,往往不是写代码那天,而是系统升级后的那个早晨。很多团队都有过类似体验,业务明明没有改,几个增强点、几段直连标准表的逻辑、几次对未发布对象的调用,却在升级后一起冒烟。表面上看,这是兼容性问题,往深处看,其实是开发边界没有真正立起来。AB…...

从 Classic ABAP 走到 ABAP Cloud,开发习惯、架构边界与 Clean Core 的重新建立

今天还在做 SAP S/4HANA 项目的人,大多已经感受到一个很现实的变化,真正难迁移的,从来不只是几段旧代码,也不只是把 SE80 里的对象搬到一个新工具里,而是整个开发思路要重新校准。以前很多团队习惯把 ABAP 当成一个紧贴业务系统内核的实现层,屏幕逻辑、数据库访问、增强点…...

把轻量接口做成真正可用的业务入口,聊透 ABAP HTTP Service Editor 的开发节奏

做 ABAP 集成时,经常会碰到这样一类需求,外部系统只想调用一个很轻的 URL,拿一段文本、一个健康检查结果、一个简单的回调响应,或者把某个小型业务动作推到 ABAP 后端里。这个时候,很多人脑子里冒出来的还是 RAP、Service Binding、Gateway,甚至直接跳到 SICF 手工找节点…...

别再瞎学 C 语言了!真・胎教级入门教程 | NO.3 万字详解分支与循环 | 下篇

欢迎大家来到<<别再瞎学 C 语言了&#xff01;真・胎教级入门教程 | NO.3 万字详解分支与循环>>下篇学习.在上期中我们已经了解了分支与循环中的if语句,关系操作符,条件操作符,逻辑操作符和switch语句.这一期我们继续来了解剩下的内容.6. while循环在C语言中有三种…...

SpringBoot的服装商城系统毕设源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于Spring Boot与Vue框架的服装商城系统以解决传统电商平台在用户体验优化与业务逻辑实现方面的局限性。当前电子商务领域面临商品信息展示不…...

Java 判断选择循环

一、判断1.应用场景&#xff1a;只有满足条件&#xff0c;对应的代码才能执行2.三种形式&#xff1a;3.示例&#xff1a;4.注意事项&#xff1a;二、选择1.使用&#xff1a;把所有的选择一一列举出来&#xff0c;根据不同的条件任选其一2.格式&#xff1a;3.示例&#xff1a;4.…...

告别网盘限速!3步搞定百度网盘高速下载秘籍

告别网盘限速&#xff01;3步搞定百度网盘高速下载秘籍 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的龟速下载而烦恼吗&#xff1f;每次看到那几十KB/s的速…...

向华为学习——解读华为流程型组织的基石:业务流架构(BPA)全景解析【附全文阅读】

华为流程型组织 BPA 业务流架构|推介总结 适应人群:企业高管、战略与变革负责人、流程与运营总监、组织与 HR 管理者、数字化与 IT 架构师、咨询顾问。 重要性总结:本文档是华为流程型组织建设的核心方法论,系统解析 BPA 业务流架构全景,明确战略驱动、业务本质、责任落地…...

百度网盘直链解析技术深度解析:突破限速壁垒的工程实践

百度网盘直链解析技术深度解析&#xff1a;突破限速壁垒的工程实践 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在当今数字化时代&#xff0c;百度网盘作为国内主流云存储服…...