aclGetRawTensorAddr
函数功能
获取aclTensor中原始记录的Device内存地址,aclTensor由aclCreateTensor接口创建。
函数原型
aclnnStatus aclGetRawTensorAddr(const aclTensor *tensor, void **addr)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
tensor |
输入 |
输入的aclTensor指针。 |
addr |
输入 |
返回的aclTensor中记录的Device内存地址。 |
约束与限制
- 必须在一阶段接口aclxxXxxGetWorkspaceSize之前或者二阶段接口aclxxXxx之后使用,不支持在一阶段与二阶段接口之间使用。
- 本接口可与aclSetRawTensorAddr接口配套使用,查看刷新后的结果是否符合预期。
调用示例
关键代码示例如下,仅供参考,不支持直接拷贝运行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // 创建输入和输出张量inputTensor和outputTensor std::vector<int64_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, &workspace_size, &executor); ret = aclxxXxx(workspace, workspace_size, executor, stream); ... |
父主题: 公共接口