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

CANN/ops-math复制填充3D反向传播算子

aclnnReplicationPad3dBackward【免费下载链接】ops-math本项目是CANN提供的数学类基础计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-math 查看源码产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√Atlas 200I/500 A2 推理产品×Atlas 推理系列产品√Atlas 训练系列产品√功能说明计算aclnnReplicationPad3d的反向传播。函数原型每个算子分为两段式接口必须先调用“aclnnReplicationPad3dBackwardGetWorkspaceSize”接口获取计算所需workspace大小以及包含了算子计算流程的执行器再调用“aclnnReplicationPad3dBackward”接口执行计算。aclnnStatus aclnnReplicationPad3dBackwardGetWorkspaceSize( const aclTensor* gradOutput, const aclTensor* self, const aclIntArray* padding, aclTensor* gradInput, uint64_t* workspaceSize, aclOpExecutor** executor)aclnnStatus aclnnReplicationPad3dBackward( void* workspace, uint64_t workspaceSize, aclOpExecutor* executor, const aclrtStream stream)aclnnReplicationPad3dBackwardGetWorkspaceSize参数说明参数名输入/输出描述使用说明数据类型数据格式维度shape非连续TensorgradOutputaclTensor*输入反向传播的输入维度支持四维或五维且与self和gradInput一致shape、dtype需要与正向传播aclnnReplicationPad3d的输出out一致。FLOAT16、FLOAT32、BFLOAT16、DOUBLE、COMPLEX64、COMPLEX128。ND维度与self保持一致√selfaclTensor*输入正向的输入张量维度支持四维或五维且与gradOutput和gradInput一致shape、dtype需要与gradInput一致。FLOAT16、FLOAT32、BFLOAT16、DOUBLE、COMPLEX64、COMPLEX128ND4-5√paddingaclIntArray*输入-长度为6数值依次代表左右上下前后需要填充的值。padding前两个数值需小于self最后一维度的数值中间两个数值需小于self倒数第二维度的数值后两个数值需小于self倒数第三维度的数值。INT64---gradInputaclTensor*输出反向传播的输出维度支持四维或五维且与gradOutput和self一致dtype需要与gradOutput一致。与self保持一致ND与self保持一致√workspaceSizeuint64_t*输出返回需要在Device侧申请的workspace大小。-----executoraclOpExecutor**输出返回op执行器包含了算子计算流程。-----Atlas 训练系列产品 数据类型不支持BFLOAT16。返回值aclnnStatus返回状态码具体参见aclnn返回码。第一段接口完成入参校验出现以下场景时报错返回值错误码描述ACLNN_ERR_PARAM_NULLPTR161001Tensor为空指针。ACLNN_ERR_PARAM_INVALID161002gradOutput、self、padding和gradInput的数据类型或数据格式不在支持的范围之内。gradOutput、self、padding和gradInput的输入shape在支持范围之外。self为空tensor且后4维存在维度大小为0。padding内的数值大于等于self的维度。padding的size不等于6。gradOutput shape需要与replication_pad3d正向传播的output一致。aclnnReplicationPad3dBackward参数说明参数名输入/输出描述workspace输入在Device侧申请的workspace内存地址。workspaceSize输入在Device侧申请的workspace大小由第一段接口aclnnReplicationPad3dBackwardGetWorkspaceSize获取。executor输入op执行器包含了算子计算流程。stream输入指定执行任务的Stream。返回值aclnnStatus返回状态码具体参见aclnn返回码。约束说明确定性计算aclnnReplicationPad3dBackward默认确定性实现。当gradOutput中元素个数大于300*1024*1024有运行超时风险。调用示例示例代码如下仅供参考具体编译和执行过程请参考编译与运行样例。#include acl/acl.h #include aclnnop/aclnn_replication_pad3d_backward.h #include iostream #include vector #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 shape_size 1; for (auto i : shape) { shape_size * i; } return shape_size; } 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手册 // 根据自己的实际device填写deviceId int32_t deviceId 0; aclrtStream stream; auto ret Init(deviceId, stream); // check根据自己的需要处理 CHECK_RET(ret 0, LOG_PRINT(Init acl failed. ERROR: %d\n, ret); return ret); // 2. 构造输入与输出需要根据API的接口定义构造 std::vectorint64_t gradOutputShape {1, 1, 4, 4, 4}; std::vectorint64_t selfShape {1, 1, 2, 2, 2}; std::vectorint64_t gradInputShape {1, 1, 2, 2, 2}; void* gradOutputDeviceAddr nullptr; void* selfDeviceAddr nullptr; void* gradInputDeviceAddr nullptr; aclTensor* gradOutput nullptr; aclTensor* self nullptr; aclIntArray* padding nullptr; aclTensor* gradInput nullptr; std::vectorfloat gradOutputHostData(64); for (int64_t i 0; i 64; i) { gradOutputHostData[i] 1; } std::vectorfloat selfHostData {1, 2, 3, 4, 5, 6, 7, 8}; std::vectorint64_t paddingData {1, 1, 1, 1, 1, 1}; std::vectorfloat gradInputHostData {0, 0, 0, 0, 0, 0, 0, 0}; // 创建gradOutput aclTensor ret CreateAclTensor(gradOutputHostData, gradOutputShape, gradOutputDeviceAddr, aclDataType::ACL_FLOAT, gradOutput); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建self aclTensor ret CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); CHECK_RET(ret ACL_SUCCESS, return ret); // 创建padding aclIntArray padding aclCreateIntArray(paddingData.data(), 6); CHECK_RET(padding ! nullptr, return ret); // 创建gradInput aclTensor ret CreateAclTensor(gradInputHostData, gradInputShape, gradInputDeviceAddr, aclDataType::ACL_FLOAT, gradInput); CHECK_RET(ret ACL_SUCCESS, return ret); // 3. 调用CANN算子库API需要修改为具体的API uint64_t workspaceSize 0; aclOpExecutor* executor; // 调用aclnnReplicationPad3dBackward第一段接口 ret aclnnReplicationPad3dBackwardGetWorkspaceSize(gradOutput, self, padding, gradInput, workspaceSize, executor); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclnnReplicationPad3dBackwardGetWorkspaceSize 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;); } // 调用aclnnReplicationPad3dBackward第二段接口 ret aclnnReplicationPad3dBackward(workspaceAddr, workspaceSize, executor, stream); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclnnReplicationPad3dBackward 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侧需要根据具体API的接口定义修改 auto size GetShapeSize(gradInputShape); std::vectorfloat resultData(size, 0); ret aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), gradInputDeviceAddr, size * sizeof(float), 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需要根据具体API的接口定义修改 aclDestroyTensor(gradOutput); aclDestroyTensor(self); aclDestroyIntArray(padding); aclDestroyTensor(gradInput); // 7.释放device资源 aclrtFree(gradOutputDeviceAddr); aclrtFree(selfDeviceAddr); aclrtFree(gradInputDeviceAddr); if (workspaceSize 0){ aclrtFree(workspaceAddr); } aclrtDestroyStream(stream); aclrtResetDevice(deviceId); aclFinalize(); return 0; }【免费下载链接】ops-math本项目是CANN提供的数学类基础计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-math创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

CANN/ops-math复制填充3D反向传播算子

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

CANN/hcomm算法分析器使用指南

算法分析器工具使用指南 【免费下载链接】hcomm HCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 工具简介 本文档仅用于指导用户编译、运行本目录下的…...

基于Transformer与CGAN的太赫兹石墨烯超表面智能逆向设计

1. 项目概述:当AI遇见超材料设计太赫兹波段,这个介于微波和红外之间的“最后一片处女地”,在通信、成像和传感领域有着巨大的应用潜力。而石墨烯超表面,作为一种由亚波长石墨烯单元构成的二维人工结构,能够通过其独特的…...

基于MCP协议构建AI-Telegram智能助手:从原理到部署实践

1. 项目概述:一个连接AI与即时通讯的桥梁最近在折腾AI应用开发的朋友,可能都绕不开一个词:MCP(Model Context Protocol)。简单来说,它就像给AI大模型装上了一套标准化的“手”和“眼睛”,让模型…...

CANN学习中心安全声明

安全声明 【免费下载链接】cann-learning-hub CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。 项目地址: https://gitcode.com/cann/cann-learning-hub 运行用户建议 基于安全…...

CANN驱动PCIe插槽查询API

dcmi_get_card_pcie_slot 【免费下载链接】driver 本项目是CANN提供的驱动模块,实现基础驱动和资源管理及调度等功能,使能昇腾芯片。 项目地址: https://gitcode.com/cann/driver 函数原型 int dcmi_get_card_pcie_slot(int card_id, int *pcie_…...

基于多层级注意力机制的群体行为识别:在特殊教育场景下的工程实践

1. 项目概述:当计算机视觉走进特殊教育课堂 作为一名长期关注AI技术落地的从业者,我一直在寻找那些能将前沿算法与真实社会需求紧密结合的领域。自闭症谱系障碍(ASD)儿童的行为干预与评估,就是这样一个充满挑战又极具价…...

MyTV-Android深度解析:Android 4.x系统兼容性挑战与架构设计攻坚

MyTV-Android深度解析:Android 4.x系统兼容性挑战与架构设计攻坚 【免费下载链接】mytv-android 使用Android原生开发的视频播放软件 项目地址: https://gitcode.com/gh_mirrors/my/mytv-android MyTV-Android是一款专为老旧Android设备优化的电视直播应用&a…...

基于GRU与注意力机制的ICU多重耐药菌感染风险预测模型构建与应用

1. 项目概述与核心价值在重症监护室(ICU)里,时间就是生命,而感染则是悬在患者和医生头顶的达摩克利斯之剑。其中,多重耐药菌(MDRO)感染更是让临床治疗陷入困境的“硬骨头”——常规抗生素无效&a…...

CANN/cann-samples A16W16非量化矩阵乘算子

A16W16非量化矩阵乘算子 【免费下载链接】cann-samples 算子领域高性能实战演进样例与体系化调优知识库 项目地址: https://gitcode.com/cann/cann-samples 概述 本示例展示了A16W16非量化矩阵乘算子在昇腾AI处理器上的完整实现,包含基于SWAT模板和StreamK模…...

Codex CLI与MCP协议集成:打造无缝AI编程工作流

1. 项目概述:当Codex CLI遇上MCP协议如果你和我一样,是个重度AI编程工具使用者,那你肯定对OpenAI的Codex CLI不陌生。这个命令行工具,特别是它最新的GPT-5.4模型,在代码生成和项目理解上的能力,已经让很多开…...

CANN鸿蒙推理实践库

cann-recipes-harmony-infer 【免费下载链接】cann-recipes-harmony-infer 本项目为鸿蒙开发者提供基于CANN平台的业务实践案例,方便开发者参考实现端云能力迁移及端侧推理部署。 项目地址: https://gitcode.com/cann/cann-recipes-harmony-infer &#x1f5…...

侧信道攻击揭秘:如何从嵌入式AI黑盒中窃取Logits并生成对抗样本

1. 项目概述:当AI遇上硬件,安全边界在哪里?最近几年,嵌入式AI设备遍地开花,从智能门锁的人脸识别到工业质检的视觉模块,再到智能音箱的语音唤醒,这些设备的核心都是一个被封装好的“黑盒”AI模型…...

基于WebView2的ChatGPT桌面客户端开发:从原理到实践

1. 项目概述与核心价值最近在折腾一个需要集成AI对话能力的桌面应用,发现了一个挺有意思的开源项目——Akuma1tko/ChatGPT-WebView。简单来说,它就是一个用C#写的、把ChatGPT的Web版界面(也就是我们平时在浏览器里用的那个chat.openai.com&am…...

微分方程在机器学习中的工程化落地:PINN、Neural ODE与SINDy实战指南

1. 这不是数学课,而是一份工程师手边的微分方程实战手册你打开这篇内容,大概率不是为了重温大学里那本泛黄的《常微分方程》教材,也不是想听“微分方程是描述变化的数学语言”这种教科书式开场白。你真正关心的是:当我在调参一个物…...

众包平台AI渗透率达33-46%:人机协同如何重塑文本任务生态

1. 项目概述:一场关于“AI渗透率”的田野调查最近,一份关于众包平台中大型语言模型使用率的调查报告,在圈内引发了不小的讨论。报告的核心结论很直接:在当前的文本类众包任务中,大约有33%到46%的产出,背后都…...

CANN/pyasc反双曲正弦函数API文档

asc.language.adv.asinh 【免费下载链接】pyasc 本项目为Python用户提供算子编程接口,支持在昇腾AI处理器上加速计算,接口与Ascend C一一对应并遵守Python原生语法。 项目地址: https://gitcode.com/cann/pyasc asc.language.adv.asinh(dst: Loca…...

Go语言AI Agent框架go-kratos/blades:构建可维护的多模态智能应用

1. 项目概述与核心价值如果你是一名Gopher,并且最近在尝试将大语言模型(LLM)的能力集成到你的Go应用中,那你大概率经历过这样的场景:面对OpenAI、Anthropic等厂商的SDK,你写了一大堆胶水代码来处理提示词模…...

告别Arduino!用STM32CubeMX+LD3320打造智能语音台灯(附完整工程)

用STM32CubeMX和LD3320实现高响应智能语音台灯 从零开始构建语音控制照明系统 智能家居设备正逐渐从手机APP控制向更自然的语音交互演进。对于电子爱好者而言,自己动手打造一个响应迅速的语音控制台灯,不仅能深入理解嵌入式系统与语音识别技术的结合&…...

CANN/DeepSeek-OCR-2推理适配

DeepSeek-OCR-2 【免费下载链接】cann-recipes-infer 本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-infer 项目简介 基于 vLLM-Ascend 的 DeepSeek-OCR-2 模型昇腾…...

OnmyojiAutoScript:基于AI的阴阳师自动化脚本架构深度解析

OnmyojiAutoScript:基于AI的阴阳师自动化脚本架构深度解析 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 作为一款专为《阴阳师》手游设计的智能辅助工具&#xff0…...

2026最权威的六大降AI率方案推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 一键生成论文技术近些年于学术辅助范畴快速兴起,其关键价值是借助自然语言处理跟…...

HarmonyOS 6 ArkUI 运动路径动画(motionPath)使用文档

文章目录运动路径动画核心1. 组件作用2. 核心适用场景3. 官方标准参数示例代码解析1 状态变量定义2 运动路径动画核心配置对应功能解析:3 动画触发逻辑对应功能:4 布局控制运行效果完整代码总结运动路径动画核心 1. 组件作用 motionPath 是 ArkUI 提供…...

AGI赋能物联网:从数据管道到智能体网络的范式革命

1. 项目概述:当AGI遇见物联网,一场静默的范式革命最近和几位做物联网平台和边缘计算的朋友聊天,大家不约而同地提到了一个词:AGI,也就是通用人工智能。这让我意识到,我们可能正站在一个技术融合的奇点上。过…...

CANN/hcomm HCCL通信管理器API

HcclGetRootInfo 【免费下载链接】hcomm HCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 产品支持情况 Ascend 950PR/Ascend 950DT:支持A…...

从设备树到CAN总线:在RK3399开发板上用SPI驱动MCP2515的保姆级避坑指南

从设备树到CAN总线:在RK3399开发板上用SPI驱动MCP2515的保姆级避坑指南 RK3399作为一款性能强劲的六核处理器,在工业控制和嵌入式领域有着广泛的应用。而CAN总线作为一种高可靠性的现场总线协议,在汽车电子和工业自动化中扮演着重要角色。本文…...

调节效应不只是‘分组回归’:用真实商业案例讲透它在AB测试与产品策略中的应用

调节效应不只是‘分组回归’:用真实商业案例讲透它在AB测试与产品策略中的应用 在互联网产品的迭代优化中,AB测试已成为验证新功能效果的标准工具。但当我们发现某个新功能的整体效果"不显著"时,是否就意味着这个功能毫无价值&…...

cann/cann-recipes-infer DeepSeek-R1推理优化

DeepSeek-R1或Kimi-K2模型在NPU实现高性能推理 【免费下载链接】cann-recipes-infer 本项目针对LLM与多模态模型推理业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-infer 概述 DeepSeek-R1和Kim…...

基于LangChain.js与Azure构建企业级RAG聊天应用实战指南

1. 项目概述:构建一个基于LangChain.js的RAG聊天应用 如果你正在寻找一个能快速上手的、企业级的AI聊天应用模板,这个项目绝对值得你花时间研究。它不是一个简单的“Hello World”示例,而是一个完整的、生产就绪的解决方案,展示了…...

长期项目使用Taotoken按Token计费带来的成本可控性体验

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期项目使用Taotoken按Token计费带来的成本可控性体验 在中长期AI应用项目的开发与维护过程中,成本管理是一个贯穿始终…...