下载
中文
注册

pyACL API采集并落盘性能数据

通过调用pyACL API方式使能Profiling功能,从而自动采集性能原始数据。采集性能原始数据成功后,可将采集的原始数据拷贝到装有Ascend-cann-toolkit开发套件包的开发环境上进行原始性能数据解析,可视化展示原始性能数据解析结果。

Profiling pyACL API

表1 Profiling pyACL API

接口

说明

acl.prof.create_config

创建Profiling配置。与acl.prof.destroy_config成对使用。

acl.prof.init

初始化Profiling,目前用于设置保存性能数据的文件的路径。与acl.prof.finalize成对使用。

acl.prof.start

下发Profiling请求,使能对应数据的采集。与acl.prof.stop成对使用。

acl.prof.stop

停止Profiling数据采集。与acl.prof.start成对使用。

acl.prof.finalize

结束Profiling。与acl.prof.init成对使用。

acl.prof.destroy_config

销毁通过acl.prof.create_config接口创建的aclprofConfig类型。与acl.prof.create_config成对使用。

  • 调用acl.prof.init后,会采集后续所有模型加载数据,包括Device侧、Host侧以及timeline汇总数据。如果在调用acl.prof.start接口时,仅指定部分Device采集性能数据,那么其余Device由于仅存在模型加载数据而无法解析。
  • acl.prof.init接口传入的Profiling性能采集数据的落盘路径,需要确保用户进程具有读写权限。

Profiling pyACL API调用示例

Profiling pyACL API,示例如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import acl
import numpy as np
# ......

# 1.申请运行管理资源,包括设置用于计算的Device、创建Context、创建Stream
# ......

# 2.模型加载,加载成功后,返回标识模型的model_id
# ......

# 3.创建aclmdlDataset类型的数据,用于描述模型的输入数据input、输出数据output
# ......

# 4.Profiling初始化
# 设置数据落盘路径
PROF_INIT_PATH='...'
ret = acl.prof.init(PROF_INIT_PATH)

# 5.进行Profiling配置
device_list = [0] # 须根据实际环境的Device ID配置
ACL_PROF_ACL_API = 0x0001
ACL_PROF_TASK_TIME = 0x0002
ACL_PROF_AICORE_METRICS = 0x0004

# 创建配置类型指针地址
prof_config = acl.prof.create_config(device_list, 0, 0, ACL_PROF_ACL_API | ACL_PROF_TASK_TIME | ACL_PROF_AICORE_METRICS)
mem_freq = "15"
ret = acl.prof.set_config(ACL_PROF_SYS_HARDWARE_MEM_FREQ, mem_freq)
ret = acl.prof.start(prof_config)

# 6.执行模型
ret = acl.mdl.execute(model_id, input, output)

# 7.处理模型推理结果
# ......

# 8.释放描述模型输入/输出信息、内存等资源,卸载模型
# ......

# 9.关闭Profiling配置, 释放配置资源, 释放Profiling组件资源
ret = acl.prof.stop(prof_config)
ret = acl.prof.destroy_config(prof_config)
ret = acl.prof.finalize()

# 10.释放运行管理资源
# ......
上述Profiling pyACL AP调用示例中接口的配置参数取值参考以下,请根据实际情况选择需要的采集参数。
  • acl.prof.create_config接口:
    1
    ACL_PROF_ACL_API | ACL_PROF_TASK_TIME | ACL_PROF_AICORE_METRICS | ACL_PROF_AICPU | ACL_PROF_L2CACHE | ACL_PROF_HCCL_TRACE | ACL_PROF_MSPROFTX | ACL_PROF_RUNTIME_API | ACL_PROF_TRAINING_TRACE
    

    参数详细介绍请参见AscendCL应用软件开发指南(Python)中的“pyACL API参考”函数:create_configdata_type_config参数说明。

  • acl.prof.set_config接口:
    1
    ACL_PROF_STORAGE_LIMIT | ACL_PROF_SYS_HARDWARE_MEM_FREQ | ACL_PROF_LLC_MODE | ACL_PROF_SYS_IO_FREQ | ACL_PROF_SYS_INTERCONNECTION_FREQ | ACL_PROF_DVPP_FREQ | ACL_PROF_HOST_SYS | ACL_PROF_HOST_SYS_USAGE | ACL_PROF_HOST_SYS_USAGE_FREQ
    

    参数详细介绍请参见AscendCL应用软件开发指南(Python)中的“pyACL API参考”函数:set_configconfig_type参数说明。