Profiling AscendCL API(通过Profiling AscendCL API采集并落盘性能数据)
通过调用AscendCL API方式使能Profiling功能,从而自动采集性能原始数据。采集性能原始数据成功后,可将采集的原始数据拷贝到装有Ascend-cann-toolkit开发套件包的开发环境上进行性能原始数据解析,可视化展示性能原始数据解析结果。
调用接口如Profiling AscendCL API所示,调用示例如Profiling AscendCL API调用示例所示。
Profiling AscendCL API
接口 |
说明 |
---|---|
aclprofCreateConfig |
创建Profiling配置。与aclprofDestroyConfig成对使用。 |
aclprofInit |
初始化Profiling,目前用于设置保存性能数据的文件的路径。与aclprofFinalize成对使用。 |
aclprofStart |
下发Profiling请求,使能对应数据的采集。与aclprofStop成对使用。 |
aclprofStop |
停止Profiling数据采集。与aclprofStart成对使用。 |
aclprofFinalize |
结束Profiling。与aclprofInit成对使用。 |
aclprofDestroyConfig |
销毁通过aclprofCreateConfig接口创建的aclprofConfig类型的数据。与aclprofCreateConfig成对使用。 |
aclprofInit接口传入的Profiling性能采集数据的落盘路径,需要确保用户进程具有读写权限。
Profiling AscendCL API详细介绍请参见Profiling AscendCL API(通过Profiling AscendCL API采集并落盘性能数据)。
Profiling AscendCL API调用示例
Profiling AscendCL 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 |
//1.AscendCL初始化 //2.申请运行管理资源,包括设置用于计算的Device、创建Context、创建Stream ret = aclrtCreateStream(&stream_); //3.Profiling初始化 //设置数据落盘路径 const char *aclProfPath = "..."; aclprofInit(aclProfPath, strlen(aclProfPath)); //4.进行Profiling配置 uint32_t deviceIdList[1] = {0}; //创建配置结构体 aclprofConfig *config = aclprofCreateConfig(deviceIdList, 1, ACL_AICORE_ARITHMETIC_UTILIZATION, nullptr,ACL_PROF_ACL_API | ACL_PROF_TASK_TIME); aclprofStart(config); aclprofStepInfo *stepInfo = aclprofCreateStepInfo(); int ret = aclprofGetStepTimestamp(stepInfo, ACL_STEP_START, stream_); //5.模型加载,加载成功后,返回标识模型的modelId //6.创建aclmdlDataset类型的数据,用于描述模型的输入数据input、输出数据output //7.执行模型 ret = aclmdlExecute(modelId, input, output); //8.处理模型推理结果 //9.释放描述模型输入/输出信息、内存等资源,卸载模型 int ret = aclprofGetStepTimestamp(stepInfo, ACL_STEP_END, stream_); aclprofDestroyStepInfo(stepInfo); //10.关闭Profiling配置, 释放配置资源, 释放Profiling组件资源 aclprofStop(config); aclprofDestroyConfig(config); aclprofFinalize(); //11.释放运行管理资源 //12. AscendCL去初始化 //...... |
- 上述Profiling AscendCL API调用示例中aclprofCreateConfig接口的配置参数取值包括:
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
请根据实际情况选择需要的采集参数。参数详细介绍请参见aclprofCreateConfig章节的dataTypeConfig参数说明。
- 若需要采集迭代内指定范围的AscendCL接口耗时(包括执行模型以及其他动作的接口),可参照以上示例代码在相应代码片段前后添加Profiling AscendCL API(标记迭代时间接口)。