下载
中文
注册

准备模型执行的输入/输出数据结构

图1 模型执行的输入/输出数据结构的准备流程

关键说明如下:

  • 模型存在多个输入、输出时,用户可调用aclmdlGetNumInputsaclmdlGetNumOutputs接口获取输入、输出的个数。
  • 模型每个输入、输出所需的内存大小,用户可调用aclmdlGetInputSizeByIndexaclmdlGetOutputSizeByIndex接口获取。

    如果模型的输入涉及动态Batch动态分辨率动态维度(ND格式)等特性,输入tensor数据的Shape支持多种档位,在模型执行前才能确定,因此该输入所需的内存大小建议用户调用aclmdlGetInputSizeByIndex接口获取,该接口获取的是最大档位的内存,确保内存够用。

  • 模型存在多个输入、输出时,用户在向aclmdlDataset中添加aclDataBuffer时,为避免顺序出错,可以先调用aclmdlGetInputNameByIndexaclmdlGetOutputNameByIndex接口获取输入、输出的名称,根据输入、输出名称所对应的index的顺序添加。
  • 使用aclmdlDesc类型的数据描述模型基本信息(例如输入/输出的个数、名称、数据类型、Format、维度信息等),使用aclmdlDataset类型的数据描述模型的输入/输出数据,模型可能存在多个输入、多个输出,每个输入/输出的内存地址、内存大小用aclDataBuffer类型的数据来描述。
    图2 aclmdlDataset类型与aclDataBuffer类型的关系