动态shape推理申请内存失败
2022/09/05
135
问题信息
问题来源 | 产品大类 | 产品子类 | 关键字 |
---|---|---|---|
官方 | CANN | 应用开发AscendCL | 动态shape、推理、申请、内存 |
问题现象描述
- 业务场景:DVPP、模型推理、应用/算子开发
- 适用处理器:Atlas 200/300/500 推理产品、Atlas 推理系列产品、Atlas 训练系列产品
- 处理器形态:EP、RC
- 问题现象:
模型推理过程中,申请了大小为0的内存,日志报错信息中包含以下关键信息。
[INFO] ASCENDCL ****** start to execute aclrtMalloc, size = 0 [ERROR] ASCENDCL ****** malloc size must be greater than zero
原因分析
模型为动态shape模型,模型的输出shape中含有-1,所以直接调用aclmdlGetOutputSizeByIndex接口取到的size为0。
然后申请了大小为0的内存,导致失败。
解决措施
请参考《应用软件开发指南 (C&C++)》的“模型动态Shape输入推理”章节内容处理。
在aclmdlGetOutputSizeByIndex取到size为0时,用户需要预估一块较大的内存。
本页内容