---
title: 使用约束
description: "- 对同一个模型，  AIPP"
url: https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/latest/Application%20Development%20Guide/aadgc/aclcppdevg_000093.html
sourcePath: /source/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Application Development Guide/aadgc/aclcppdevg_000093.html
indexId: f48fb18dc77f33365c13e3a87418cd801866ff579e8d63c2fecdd7629114b10c104
---
# 使用约束

- 对同一个模型，  AIPP
（包括静态AIPP和动态AIPP）与动态维度（ND格式）不能同时使用。
- 对同一个模型，以下方式，只能选择其中一种：

  - 调用    aclmdlSetDatasetTensorDesc
接口设置Shape范围
  - 调用    aclmdlSetDynamicBatchSize
接口设置动态Batch
  - 调用    aclmdlSetDynamicHWSize
接口设置动态分辨率
  - 调用    aclmdlSetInputDynamicDims
接口设置动态维度的维度值
- 申请模型推理的输出内存时，可以按照各档位的实际大小申请内存，也可以调用  aclmdlGetOutputSizeByIndex
接口获取内存大小后再申请内存（建议使用该方式，确保内存足够）。
- 动态AIPP和动态Batch同时使用时：

  - 调用    aclmdlCreateAIPP
接口设置batchSize时，batchSize要设置为最大batch size。
  - 模型中需要进行动态AIPP处理的data节点，其对应的输入内存大小需按照最大Batch来申请。

- 动态AIPP和动态分辨率同时使用时：

  - 若在设置动态AIPP参数时，开启了抠图或缩放或补边功能，则不能与动态分辨率同时使用。
  - 若在设置动态AIPP参数时，未开启抠图或缩放或补边功能，在与动态分辨率同时使用时，需确保通过    aclmdlSetAIPPSrcImageSize
接口设置的宽、高与通过    aclmdlSetDynamicHWSize
接口设置的宽、高相等，都必须设置成模型转换时动态分辨率最大档位的宽、高。
  - 模型中需要进行动态AIPP处理的data节点，其对应的输入内存大小需按照最大分辨率（宽、高）来申请。

- 动态AIPP和动态Shape输入（设置Shape范围）同时使用时，动态AIPP的输出图片宽、高要在所设置的Shape范围内。
- 静态AIPP和动态分辨率同时使用时，由于动态分辨率场景下输入图片的宽和高不确定，因此在使用ATC工具的insert_op_conf参数传入AIPP配置文件时，AIPP配置文件中不能开启Crop和Padding功能，并且需要将配置文件中的src_image_size_w和src_image_size_h取值设置为0。
