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

CANN/opbase:设置动态输出张量地址

aclSetDynamicOutputTensorAddr

【免费下载链接】opbase本项目是CANN算子库的基础框架库,为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase

功能说明

通过aclSetAclOpExecutorRepeatable使能aclOpExecutor可复用后,若输出Device内存地址变更,需要刷新输出aclTensorList中记录的Device内存地址。

函数原型

aclnnStatus aclSetDynamicOutputTensorAddr(aclOpExecutor *executor, size_t irIndex, const size_t relativeIndex, aclTensorList *tensors, void *addr)

参数说明

参数名输入/输出说明
executor输入设置为复用状态的aclOpExecutor。
irIndex输入待刷新的aclTensorList在算子IR原型定义中的索引,从0开始计数。
relativeIndex输入待刷新的aclTensor在aclTensorList中的索引。如果aclTensorList有N个Tensor,其取值范围为[0, N-1]。
tensors输入待刷新的aclTensorList指针。
addr输入需要刷新到指定aclTensor中的Device存储地址,该地址必须32字节对齐,否则可能会出现未定义错误。

返回值说明

返回0表示成功,返回其他值表示失败,返回码列表参见公共接口返回码。

可能失败的原因:

  • 返回561103:executor或tensors是空指针。
  • 返回161002:relativeIndex>=tensors里tensor的个数。
  • 返回161002:irIndex>=算子原型输出参数的个数。

约束说明

调用示例

关键代码示例如下,仅供参考,不支持直接拷贝运行。

// 创建输入和输出的aclTensor和aclTensorList std::vector<int64_t> shape = {1, 2, 3}; aclTensor tensor1 = aclCreateTensor(shape.data(), shape.size(), aclDataType::ACL_FLOAT, nullptr, 0, aclFormat::ACL_FORMAT_ND, shape.data(), shape.size(), nullptr); aclTensor tensor2 = aclCreateTensor(shape.data(), shape.size(), aclDataType::ACL_FLOAT, nullptr, 0, aclFormat::ACL_FORMAT_ND, shape.data(), shape.size(), nullptr); aclTensor tensor3 = aclCreateTensor(shape.data(), shape.size(), aclDataType::ACL_FLOAT, nullptr, 0, aclFormat::ACL_FORMAT_ND, shape.data(), shape.size(), nullptr); aclTensor tensor4 = aclCreateTensor(shape.data(), shape.size(), aclDataType::ACL_FLOAT, nullptr, 0, aclFormat::ACL_FORMAT_ND, shape.data(), shape.size(), nullptr); aclTensor output = aclCreateTensor(shape.data(), shape.size(), aclDataType::ACL_FLOAT, nullptr, 0, aclFormat::ACL_FORMAT_ND, shape.data(), shape.size(), nullptr); aclTensor *list[] = {tensor3, tensor4}; auto tensorList = aclCreateTensorList(list, 2); uint64_t workspaceSize = 0; aclOpExecutor *executor; // AddCustom算子有两个输入(aclTensor),一个输出(aclTensorList) // 调用第1段接口 aclnnAddCustomGetWorkspaceSize(tensor1, tensor2, tensorList , &workspaceSize, &executor); // 设置executor为可复用 aclSetAclOpExecutorRepeatable(executor); void *addr; aclSetDynamicOutputTensorAddr(executor, 0, 0, tensorList, addr); // 刷新输出tensorlist中第1个aclTensor的device地址 aclSetDynamicOutputTensorAddr(executor, 0, 1, tensorList, addr); // 刷新输出tensorlist中第2个aclTensor的device地址 ... // 调用第2段接口 aclnnAddCustom(workspace, workspaceSize, executor, stream); // 清理executor aclDestroyAclOpExecutor(executor);

【免费下载链接】opbase本项目是CANN算子库的基础框架库,为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase

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

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

相关文章:

  • CANN/ATVC PyTorch调用样例
  • 技术人副业指南:8种低门槛、高天花板的变现方式
  • PyTorch 张量操作优化:内存布局与计算效率
  • 杰理之打开OTA打印以及uboot打印的方法【篇】
  • 基于开源模板快速构建AI编程助手:从智能体原理到实战应用
  • Windows热键冲突终极解决方案:Hotkey Detective专业指南
  • 深度学习在计算病理学中的应用:从WSI分析到AI辅助诊断
  • ARM虚拟化中ICH_HFGWTR_EL2寄存器解析与应用
  • 嵌入式开发:从8/16位到32位ARM处理器的迁移指南
  • 杰理之设置IO状态的方法【篇】
  • PyTorch 自定义算子开发:C++ 扩展与 CUDA 加速
  • AGI与大型模型如何重塑医学影像分析:从专用工具到通用智能体
  • Unity C#入门:类与对象的基础认知与创建
  • 为AI代理注入情感氛围:agent-vibes项目设计与实战解析
  • 本地部署大语言模型实战:基于gpt4local的私有化AI解决方案
  • 杰理之添加AD通道的接口【篇】
  • 高效向量化Trie:加速器上的LLM生成检索约束解码技术
  • PyTorch 模型并行策略:数据并行 vs 模型并行
  • FPGA低功耗设计原理与工程实践优化
  • AI与XR技术融合:构建心脏健康数字孪生,重塑精准医疗
  • AI安全前沿:AI大模型安全防护的前沿技术
  • AItrika:基于LLM与RAG的医学文献智能解析工具实战指南
  • 庄子给普通人的生存启迪
  • 构建防误删体系:从 rm -rf 灾难到生产环境数据安全实践
  • 构建个人技能库:用Git与Markdown打造高效知识管理体系
  • 大模型“工具调用“揭秘:AI从“语言智能”跃升“行动智能“的必经之路!
  • Kong网关智能运维代理:策略驱动自动化与实战部署指南
  • AI赋能射电天文:BRAIN项目如何革新ALMA数据处理
  • 在多轮对话应用中体验Taotoken路由策略的稳定性
  • XUnity Auto Translator终极指南:5步实现Unity游戏实时翻译本地化