函数:range_start
函数:push
| C函数原型 | aclError aclprofPush(void *stamp) |
|---|---|
| Python函数 | ret = acl.prof.push(stamp) |
| 函数功能 | msproftx用于记录事件发生的时间跨度的开始时间。同步接口。 调用此接口后,Profiling自动在Stamp中记录开始的时间戳,将Event type设置为Push/Pop。 |
| 输入说明 | stamp:int,Stamp指针地址,指代msproftx事件标记。指定acl.prof.create_stamp接口的指针地址。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | - 与函数:pop接口成对使用,表示时间跨度的开始和结束。 - 不能跨线程调用,若需要跨线程可使用函数:range_start/函数:range_stop接口。 - 在函数:create_stamp接口和函数:destroy_stamp接口之间调用。 |
| 参考资源 | 接口调用示例,参见Profiling性能数据采集。 |
父主题: Profiling pyACL API for Extension(Profiling pyACL API扩展接口)
函数:pop
| C函数原型 | aclError aclprofPop() |
|---|---|
| Python函数 | ret = acl.prof.pop() |
| 函数功能 | msproftx用于记录事件发生的时间跨度的结束时间。同步接口。 调用此接口后,Profiling自动在Stamp中记录采集结束的时间戳。 |
| 输入说明 | 无 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | - 与函数:push接口成对使用,表示时间跨度的开始和结束。 - 不能跨线程调用。若需要跨线程可使用函数:range_start/函数:range_stop接口。 - 在函数:create_stamp接口和函数:destroy_stamp接口之间调用。 |
| 参考资源 | 接口调用示例,参见Profiling性能数据采集。 |
父主题: Profiling pyACL API for Extension(Profiling pyACL API扩展接口)
函数:range_start
| C函数原型 | aclError aclprofRangeStart(void *stamp, uint32_t *rangeId) |
|---|---|
| Python函数 | range_id, ret = acl.prof.range_start(stamp) |
| 函数功能 | msproftx用于记录事件发生的时间跨度的开始时间。同步接口。 调用此接口后,Profiling自动在Stamp记录采集开始的时间戳,将Event type设置为Start/Stop,生成一个进程唯一的id,并将Stamp保存在以进程粒度维护的一个map中。 |
| 输入说明 | stamp:int,Stamp指针地址,指代msproftx事件标记。指定函数:create_stamp接口的指针地址。 |
| 返回值说明 | range_id:int msproftx事件标记的唯一标识。用于在跨线程时区分。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | - 与函数:range_stop接口成对使用,表示时间跨度的开始和结束。 - 可以跨线程调用。 - 在函数:create_stamp接口和函数:destroy_stamp接口之间调用。 |
| 参考资源 | 接口调用示例,参见Profiling性能数据采集。 |
父主题: Profiling pyACL API for Extension(Profiling pyACL API扩展接口)
函数:range_stop
| C函数原型 | aclError aclprofRangeStop(uint32_t *rangeId) |
|---|---|
| Python函数 | ret = acl.prof.range_stop(range_id) |
| 函数功能 | msproftx用于记录事件发生的时间跨度的结束时间。同步接口。 调用此接口后,Profiling自动在Stamp中记录采集结束的时间戳。 |
| 输入说明 | range_id:int,msproftx事件标记的唯一标识。用于在跨线程时区分。 |
| 返回值说明 | ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | - 与函数:range_stop接口成对使用,表示时间跨度的开始和结束。 - 可以跨线程调用。 - 在函数:create_stamp接口和函数:destroy_stamp接口之间调用。 |
| 参考资源 | 接口调用示例,参见Profiling性能数据采集。 |
父主题: Profiling pyACL API for Extension(Profiling pyACL API扩展接口)
函数:destroy_stamp
| C函数原型 | void aclprofDestroyStamp(void *stamp) |
|---|---|
| Python函数 | acl.prof.destroy_stamp(stamp) |
| 函数功能 | 释放msproftx事件标记。同步接口。 |
| 输入说明 | stamp:int,Stamp指针地址,指代msproftx事件标记。指定函数:create_stamp接口的指针地址。 |
| 返回值说明 | 无 |
| 约束说明 | 与函数:create_stamp接口配对使用,在函数:stop接口前调用。 |
| 参考资源 | 接口调用示例,参见Profiling性能数据采集。 |
父主题: Profiling pyACL API for Extension(Profiling pyACL API扩展接口)
功能介绍
功能
该章节描述使用订阅算子信息的Profiling pyACL API采集性能数据,实现将采集到的Profiling数据解析后写入管道,由用户读入内存,再由用户调用pyACL的接口获取性能数据。
接口调用方式:acl.prof.model_subscribe接口、acl.prof.get*接口、acl.prof.model_unsubscribe接口配合使用,实现该方式的性能数据采集,当前支持获取网络模型中算子的性能数据,包括算子名称、算子类型名称、算子执行时间等。
总体约束
不能与Profiling pyACL API(通过Profiling pyACL API采集并落盘性能数据)的接口交叉调用:acl.prof.model_subscribe接口和acl.prof.model_unsubscribe接口之间不能调用acl.prof.init接口、acl.prof.start接口、acl.prof.stop接口、acl.prof.finalize接口。
接口约束说明
- 接口调用要求:
- acl.prof.model_subscribe接口在模型执行之前调用,若在模型执行过程中调用acl.prof.model_subscribe接口,Profling采集到的数据为调用acl.prof.model_subscribe接口之后的数据,可能导致数据不完整。
- acl.prof.model_subscribe接口需与acl.prof.model_unsubscribe接口配对使用,不能在调用acl.prof.model_unsubscribe接口前,多次调用acl.prof.model_subscribe接口重复订阅相同的模型。
- 不能调用acl.prof.model_subscribe接口订阅不存在的模型ID。
- 不能调用acl.prof.model_unsubscribe接口取消订阅不存在的模型ID或未订阅过的模型ID。
- 如果在同一个Device上加载了多个模型,只能对多个模型下发同样的订阅配置。
- 接口调用顺序:
-
建议的接口调用顺序如下:
模型加载-->acl.prof.model_subscribe接口-->acl.prof.get_op_desc_size接口-->acl.prof.get_op_num接口-->acl.prof.get_op_type/acl.prof.get_op_name/acl.prof.get_op_start/acl.prof.get_op_end/acl.prof.get_op_duration/acl.prof.get_model_id接口-->acl.prof.model_unsubscribe接口
-
错误的接口调用顺序示例如下,以重复定义同一个模型为例:
模型1加载-->acl.prof.model_subscribe接口(指定模型1)-->acl.prof.model_subscribe接口(指定模型1)-->acl.prof.model_unsubscribe接口
-
父主题: Profiling pyACL API for Subscription(订阅算子信息的Profiling pyACL API)
在线提单