---
title: 总体说明
description: "不能与订阅算子信息的接口交叉调用：acl.prof.init接口和acl.prof.finalize接口之间不能调用acl.prof.model_subscribe接口、aclprofGet*接口、acl.prof.model_unsubscribe接口。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/runtimeapi/aclpythondevg_01_0847.html
sourcePath: /source/zh/canncommercial/900/API/runtimeapi/aclpythondevg_01_0847.html
indexId: 25b195d53ac3414491d30f20658412596dc35ee7f305df83c84b24cf1355273371
---
# 总体说明

#### 总体约束

不能与订阅算子信息的接口交叉调用：acl.prof.init接口和acl.prof.finalize接口之间不能调用acl.prof.model_subscribe接口、aclprofGet*接口、acl.prof.model_unsubscribe接口。


#### 接口约束说明

- 调用接口要求：

  -     acl.prof.init
接口必须在    acl.init
接口之后、模型加载之前调用。
    如果已经通过acl.init接口配置了Profiling信息，则调用acl.prof.init接口、acl.prof.start接口、acl.prof.stop接口、acl.prof.finalize时，会返回报错。

    如果没有调用acl.prof.init接口，调用acl.prof.start接口、acl.prof.stop接口、acl.prof.finalize时，会返回报错。

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

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

  - 在用户APP的进程生命周期内，    acl.prof.init
接口与    acl.prof.finalize
接口配对使用，建议只调用一次，如该组合多次调用可以改变保存性能数据的文件的路径。
  -     acl.prof.start
接口与    acl.prof.stop
接口需配对使用。
  - Profiling msproftx采集功能相关接口须在    acl.prof.start
接口与    acl.prof.stop
接口之间调用。其中配对使用的接口有：    acl.prof.create_stamp
/    acl.prof.destroy_stamp
、    acl.prof.push
/    acl.prof.pop
、    acl.prof.range_start
/    acl.prof.range_stop
。
  - 调用    acl.finalize
并接收到正常退出码后为执行完毕，其他情况为非正常。由于性能数据采集不支持多进程并发执行，为确保驱动关闭正常，需要在前一个性能数据采集用例完全执行完毕之后再执行下一轮采集。建议在    acl.finalize
接口返回值上加入异常处理操作，方便展示执行状态与问题定位。
- 接口调用顺序：

  - 建议的接口调用顺序如下，以“一个用户APP进程内采集多个模型推理时的性能数据”为例：
    acl.init接口-->acl.prof.init接口-->acl.prof.start接口（指定Device 0和Device 1）-->模型1加载-->模型1执行-->acl.prof.stop接口（与acl.prof.start接口的aclprofConfig数据保持一致）-->acl.prof.start接口（指定Device 1和Device 2）-->模型2加载-->模型2执行-->acl.prof.stop接口（与acl.prof.start接口的aclprofConfig数据保持一致）-->acl.prof.finalize接口-->执行其它任务-->模型卸载-->acl.finalize接口

  - 错误的接口调用顺序示例如下，以“一个用户APP进程内，如果连续调用多次    acl.prof.start
接口，指定的Device重复”为例：
    acl.init接口-->acl.prof.init接口-->acl.prof.start接口（指定Device 0和Device 1）-->acl.prof.start接口（指定Device 1和Device 2）-->模型1加载-->模型1执行-->模型2加载-->模型2执行-->acl.prof.stop接口-->acl.prof.stop接口-->acl.prof.finalize-->执行其它任务-->模型卸载-->acl.finalize接口
