该章节下的接口用于Profiling采集性能数据,实现方式支持以下两种:
acl.prof.init接口、acl.prof.start接口、acl.prof.stop接口、acl.prof.finalize接口配合使用,实现该方式的性能数据采集。该方式可获取AscendCL的接口性能数据、AI Core上算子的执行时间、AI Core性能指标数据等。目前这些接口为进程级控制,表示在进程内任意线程调用该接口,其它线程都会生效。
Profiling工具的使用,请参见《CANN 开发工具指南》中的“Profiling工具使用指南”章节。
acl.prof.model_subscribe接口、acl.prof.get_op_*接口、acl.prof.model_un_subscribe接口配合使用,实现该方式的性能数据采集,当前支持获取网络模型中算子的性能数据,包括算子名称、算子类型名称、算子执行时间等。
两种方式的Profiling性能数据采集接口不能交叉调用:
如果已经通过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接口时,可以指定从一个Device上采集性能数据,也可以指定从多个Device上采集性能数据。
一个用户APP进程内,如果连续调用多次acl.prof.start接口,指定重复的Profiling配置,或指定的Device重复,会返回报错。
acl.init接口-->acl.prof.init接口-->acl.prof.start接口(指定Device 0和Device1)-->模型1加载-->模型1执行-->acl.prof.stop接口(与acl.prof.start接口的aclprofConfig数据保持一致)-->acl.prof.start接口(指定Device 1和Device2)-->模型2加载-->模型2执行-->acl.prof.stop接口(与acl.prof.start接口的aclprofConfig数据保持一致)-->acl.prof.finalize接口-->执行其它任务-->模型卸载-->acl.finalize接口
acl.init接口-->acl.prof.init接口-->acl.prof.start接口(指定Device 0和Device1)-->acl.prof.start接口(指定Device 1和Device 2)-->模型1加载-->模型1执行-->模型2加载-->模型2执行-->acl.prof.stop接口-->acl.prof.stop接口-->acl.prof.finalize-->执行其它任务-->模型卸载-->acl.finalize接口
模型加载-->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_un_subscribe接口
模型1加载-->acl.prof.model_subscribe接口(指定模型1)-->acl.prof.model_subscribe接口(指定模型1)-->acl.prof.model_un_subscribe接口