aclGetRawTensorAddr【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase功能说明获取aclTensor中原始记录的Device内存地址aclTensor由aclCreateTensor接口创建。函数原型aclnnStatus aclGetRawTensorAddr(const aclTensor *tensor, void **addr)参数说明参数名输入/输出说明tensor输入输入的aclTensor指针。addr输出返回的aclTensor中记录的Device内存地址。返回值说明返回0表示成功返回其他值表示失败返回码列表参见公共接口返回码。可能失败的原因返回161001参数tensor或者addr为空指针。约束说明必须在一阶段接口aclxxXxxGetWorkspaceSize之前或者二阶段接口aclxxXxx之后使用不支持在一阶段与二阶段接口之间使用。本接口可与aclSetRawTensorAddr接口配套使用查看刷新后的结果是否符合预期。调用示例关键代码示例如下仅供参考不支持直接拷贝运行。// 创建输入和输出张量inputTensor和outputTensor std::vectorint64_t shape {1, 2, 3}; void *addr1; void *addr2; ... // 申请device内存addr1 addr2 aclTensor inputTensor aclCreateTensor(shape.data(), shape.size(), aclDataType::ACL_FLOAT, nullptr, 0, aclFormat::ACL_FORMAT_ND, shape.data(), shape.size(), addr1); aclTensor outputTensor aclCreateTensor(shape.data(), shape.size(), aclDataType::ACL_FLOAT, nullptr, 0, aclFormat::ACL_FORMAT_ND, shape.data(), shape.size(), addr2); void *getAddr1 nullptr; void *getAddr2 nullptr; // 获取inputTensor中记录的device内存地址此处获取到的指针getAddr1指向的内存地址与addr1一致 auto ret aclGetRawTensorAddr(inputTensor, getAddr1); // 获取outputTensor中记录的device内存地址此处获取到的指针getAddr2指向的内存地址与addr2一致 auto ret aclGetRawTensorAddr(outputTensor, getAddr2); // 调用Xxx算子一、二阶段接口 ret aclxxXxxGetWorkspaceSize(inputTensor, outputTensor, workspaceSize, executor); ret aclxxXxx(workspace, workspaceSize, executor, stream); ...【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考