aclSetTensorAddr【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase功能说明通过aclSetAclOpExecutorRepeatable使能aclOpExecutor可复用后若输入或输出Device内存地址变更需要刷新对应aclTensor中记录的Device内存地址。函数原型aclnnStatus aclSetTensorAddr(aclOpExecutor *executor, const size_t index, aclTensor *tensor, void *addr)参数说明参数名输入/输出说明executor输入设置为复用状态的aclOpExecutor。index输入待刷新的aclTensor索引取值范围是[0, tensor的总数-1]。tensor输入待刷新的aclTensor指针。addr输入需要刷新到指定aclTensor中的Device存储地址该地址必须32字节对齐否则可能会出现未定义错误。返回值说明返回0表示成功返回其他值表示失败返回码列表参见公共接口返回码。可能失败的原因返回561103executor或tensor是空指针。返回161002index取值越界。返回161002第一次执行一阶段接口aclxxXxxGetWorkspaceSize时传入的aclTensor是nullptr不再支持刷新地址。约束说明无调用示例关键代码示例如下仅供参考不支持直接拷贝运行。// 创建输入和输出的aclTensor和aclTensorList std::vectorint64_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 output aclCreateTensor(shape.data(), shape.size(), aclDataType::ACL_FLOAT, nullptr, 0, aclFormat::ACL_FORMAT_ND, shape.data(), shape.size(), nullptr); aclTensor *list[] {tensor1, tensor2}; auto tensorList aclCreateTensorList(list, 2); uint64_t workspaceSize 0; aclOpExecutor *executor; // AddCustom算子有两个输入aclTensorList和aclTensor一个输出aclTensor // 调用第1段接口 aclnnAddCustomGetWorkspaceSize(tensorList, tensor3, output, workspaceSize, executor); // 设置executor为可复用 aclSetAclOpExecutorRepeatable(executor); void *addr; aclSetTensorAddr(executor, 0, tensor1, addr); // 刷新输入tensorlist中第1个aclTensor的device地址 aclSetTensorAddr(executor, 1, tensor2, addr); // 刷新输入tensorlist中第2个aclTensor的device地址 aclSetTensorAddr(executor, 2, tensor3, addr); // 刷新输入aclTensor的device地址 aclSetTensorAddr(executor, 3, output, addr); // 刷新输出aclTensor的device地址 ... // 调用第2段接口 aclnnAddCustom(workspace, workspaceSize, executor, stream); // 清理executor aclDestroyAclOpExecutor(executor);【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考