ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

CANN/GE:获取模型输出大小API

2026/9/10 23:58:18 拓冰建站 浏览量
CANN/GE:获取模型输出大小API aclmdlGetOutputSizeByIndex【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge产品支持情况产品是否支持Atlas A3 训练系列产品 / Atlas A3 推理系列产品√Atlas A2 训练系列产品 / Atlas A2 推理系列产品√功能说明根据模型描述信息获取指定输出的大小单位为Byte。函数原型size_t aclmdlGetOutputSizeByIndex(aclmdlDesc *modelDesc, size_t index)参数说明参数名输入/输出说明modelDesc输入aclmdlDesc类型的指针。需提前调用aclmdlCreateDesc接口创建aclmdlDesc类型的数据。index输入指定获取第几个输出的大小index值从0开始。返回值说明针对动态Batch、动态分辨率宽高的场景返回最大档位对应的输出的大小静态场景下返回指定输出的大小。单位是Byte。约束说明如果通过本接口获取的大小为0有可能是由于输出Shape的范围不确定当前支持以下两种处理方式方式一系统内部自行申请对应index的输出内存节省内存但内存数据使用结束后需由用户释放内存同时系统内部申请内存时涉及内存拷贝可能涉及性能损耗。该方式仅支持在使用aclmdlExecute、aclmdlExecuteV2推理接口时使用。调用aclCreateDataBuffer接口创建存放对应index输出数据的aclDataBuffer类型时支持在data参数处传入nullptr同时size需设置为0表示创建一个空的aclDataBuffer类型然后在模型执行过程中系统内部自行计算并申请该index输出的内存。使用该方式可节省内存但内存数据使用结束后需由用户释放内存并重置aclDataBuffer同时系统内部申请内存时涉及内存拷贝可能涉及性能损耗。释放内存并重置aclDataBuffer的示例代码如下aclDataBuffer *dataBuffer aclmdlGetDatasetBuffer(output, 0); // 根据index获取对应的dataBuffer void *data aclGetDataBufferAddr(dataBuffer); // 获取data的Device指针 aclrtFree(data ); // 释放Device内存 aclUpdateDataBuffer(dataBuffer, nullptr, 0); // 重置dataBuffer里面内容以便下次推理方式二用户预估输出内存大小并申请内存由用户自行管理内存但内存大小可能不够或超出不够时系统会校验报错超出时会浪费内存。用户需先根据实际情况预估一块较大的输出内存在模型执行过程中系统会校验用户指定的输出内存大小是否符合要求如果不符合要求系统会返回报错并在报错信息中提示具体需要多大的输出内存。您可以通过以下两种方式查看报错获取应用类日志查看ERROR级别的报错如何获取并查看日志请参见《日志参考》。在应用程序中调用aclGetRecentErrMsg接口获取报错。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考