---
title: 数据采集说明
description: "不能与订阅算子信息的接口交叉调用：aclprofInit接口和aclprofFinalize接口之间不能调用aclprofModelSubscribe接口、aclprofGet*接口、aclprofModelUnSubscribe接口。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/runtimeapi/aclcppdevg_03_1257.html
sourcePath: /source/zh/canncommercial/900/API/runtimeapi/aclcppdevg_03_1257.html
indexId: 1ff18e15f6e4cd2e083055e7a4b19550e59f26038c42e16ba3c4933d7638349968
---
# 数据采集说明

#### 总体约束

不能与订阅算子信息的接口交叉调用：aclprofInit接口和aclprofFinalize接口之间不能调用aclprofModelSubscribe接口、aclprofGet*接口、aclprofModelUnSubscribe接口。


#### 接口约束说明

- 调用接口要求：

  -     aclprofInit
接口必须在aclInit接口之后、模型加载之前调用。
    如果已经通过aclInit接口配置了Profiling信息，则调用aclprofInit接口、aclprofStart接口、aclprofStop接口、aclprofFinalize时，会返回报错。

    如果没有调用aclprofInit接口，调用aclprofStart接口、aclprofStop接口、aclprofFinalize时，会返回报错。

  -     aclprofStart
接口在模型执行之前调用，若在模型执行过程中调用    aclprofStart
接口，Profiling采集到的数据为调用    aclprofStart
接口之后的数据，可能导致数据不完整。
    调用aclprofStart接口时，可以指定从一个Device上采集性能数据，也可以指定从多个Device上采集性能数据。

    一个用户APP进程内，如果连续调用多次aclprofStart接口，指定重复的Profiling配置，或指定的Device重复，会返回报错。

  - 在用户APP的进程生命周期内，    aclprofInit
接口与    aclprofFinalize
接口配对使用，建议只调用一次，如该组合多次调用可以改变保存性能数据的文件的路径。
  -     aclprofStart
接口与    aclprofStop
接口需配对使用。
  - aclprofSetConfig接口必须在aclprofStart接口之前调用。一个APP进程内，可以根据需要选择一次或多次调用aclprofSetConfig接口。
  - 调用aclFinalize并接收到正常退出码后为执行完毕，其他情况为非正常。由于性能数据采集不支持多进程并发执行，为确保驱动关闭正常，需要在前一个性能数据采集用例完全执行完毕之后再执行下一轮采集。建议在aclFinalize接口返回值上加入异常处理操作，方便展示执行状态与问题定位。
- 接口调用顺序：

  - 建议的接口调用顺序如下，以“一个用户APP进程内采集多个模型推理时的性能数据”为例：
    aclInit接口-->aclprofInit接口-->aclprofStart接口(指定Device 0和Device 1)-->模型1加载-->模型1执行-->aclprofStop接口(与aclprofStart接口的aclprofConfig数据保持一致)-->aclprofStart接口(指定Device 1和Device 2)-->模型2加载-->模型2执行-->aclprofStop接口(与aclprofStart接口的aclprofConfig数据保持一致)-->aclprofFinalize接口-->执行其它任务-->模型卸载-->aclFinalize接口

  - 错误的接口调用顺序示例如下，以“一个用户APP进程内，如果连续调用多次    aclprofStart
接口，指定的Device重复”为例：
    aclInit接口-->aclprofInit接口-->aclprofStart接口(指定Device 0和Device 1)-->aclprofStart接口(指定Device 1和Device 2)-->模型1加载-->模型1执行-->模型2加载-->模型2执行-->aclprofStop接口-->aclprofStop接口-->aclprofFinalize-->执行其它任务-->模型卸载-->aclFinalize接口
