跳到主要内容

函数:create_config

函数:create_search_result

C函数原型aclfvSearchResult *aclfvCreateSearchResult(uint32_t queryCnt, uint32_t *resultNum, uint32_t resultNumDataLen, uint32_t *id0, uint32_t *id1, uint32_t *resultOffset, float *resultDistance, uint32_t dataLen)
Python函数search_result = acl.fv.create_search_result(query_cnt, result_num, result_num_data_len, id_0, id_1, result_offset, result_distance, data_len)
函数功能创建aclfvSearchResult类型的数据,表示创建检索结果信息。同步接口。 如需销毁aclfvSearchResult类型的数据,请参见函数:destroy_search_result。 Atlas 200/500 A2推理产品不支持该接口。
输入说明- query_cnt:int,检索请求个数,1:N场景为1。
- result_num:int,每个检索请求的结果个数。
- result_num_data_len:int,resultNum的内存总长度。
- id_0:int,一级库id,总个数为topK*queryCnt。
- id_1:int,二级库id,总个数为topK*queryCnt。
- result_offset:int,每个检索请求的检索结果对应底库的偏移,总个数为topK*queryCnt。
- result_distance:int,每个检索结果与检索请求间的距离,总个数为topK*queryCnt。
- data_len:int,申请的内存大小,计算公式为:topK*queryCnt*4Byte。
返回值说明search_result:int,指针地址。
- 返回aclfvSearchResult类型,表示成功。
- 返回0,表示失败。
约束说明

父主题: 特征向量检索

函数:destroy_search_result

C函数原型aclError aclfvDestroySearchResult(aclfvSearchResult *searchResult)
Python函数ret = acl.fv.destroy_search_result(search_result)
函数功能销毁通过acl.fv.create_search_result接口创建的aclfvSearchResult类型的数据。同步接口。 Atlas 200/500 A2推理产品不支持该接口。
输入说明search_result:int,指针地址,待销毁的aclfvSearchResult类型。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明

父主题: 特征向量检索

功能介绍

功能

该章节描述通过Profiling pyACL API采集并落盘性能数据,实现将采集到的Profiling数据写入文件,再使用Profiling工具解析该文件(请参见《性能分析工具使用指南》下的“数据解析与导出”),并展示性能分析数据。

包括以下两种接口调用方式:

  • acl.prof.init接口、acl.prof.start接口、acl.prof.stop接口、acl.prof.finalize接口配合使用,实现该方式的性能数据采集。该方式可获取pyACL的接口性能数据、AI Core上算子的执行时间、AI Core性能指标数据等。目前这些接口为进程级控制,表示在进程内任意线程调用该接口,其它线程都会生效。

    一个进程内,可以根据需求多次调用这些接口,基于不同的Profiling采集配置,采集数据。

  • 调用acl.init接口,在pyACL初始化阶段,通过*.json文件传入要采集的Profiling数据。该方式可获取pyACL的接口性能数据、AI Core上算子的执行时间、AI Core性能指标数据等。

    一个进程内,只能调用一次acl.init接口,如果要修改Profiling采集配置,需修改*.json文件中的配置。详细使用说明请参见acl.init接口处的说明,不在本章节描述。

总体约束

不能与Profiling pyACL API for Subscription(订阅算子信息的Profiling pyACL API)的接口交叉调用:acl.prof.init接口和acl.prof.finalize接口之间不能调用acl.prof.model_subscribe接口、aclprofGet*接口、acl.prof.model_unsubscribe接口。

接口约束说明

父主题: Profiling pyACL API(通过Profiling pyACL API采集并落盘性能数据)

函数:create_config

C函数原型aclprofConfig *aclprofCreateConfig(uint32_t *deviceIdlist,uint32_t deviceNums, aclprofAicoreMetrics aicoreMetrics, aclprofAicoreEvents *aicoreEvents, uint64_t dataTypeConfig)
Python函数prof_config = acl.prof.create_config(device_list,aicore_metrics, aicore_events**, data_type_config)**
函数功能创建aclprofConfig类型的数据,表示创建Profiling配置数据。同步接口。 aclProfConfig类型数据可以只创建一次、多处使用,用户需要保证数据的一致性和准确性。 如需销毁aclprofConfig类型的数据,请参见函数:destroy_config
输入说明device_list:Device ID列表。 aicore_metrics:表示aclprofAicoreMetricsaicore_events:表示AI Core事件,目前配置为0。 data_type_config: 用户选择如下多个值进行逻辑或(例如:ACL_PROF_ACL_API|ACL_PROF_AICORE_METRICS),作为data_type_config参数值。每个值表示某一类性能数据,详细说明如下:
- ACL_PROF_ACL_API:表示采集pyACL接口的性能数据,包括的同步异步内存复制时延等。
- ACL_PROF_TASK_TIME:采集算子下发耗时、算子执行耗时数据以及算子基本信息数据,提供更全面的性能分析数据。
- ACL_PROF_TASK_TIME_L0:采集算子下发耗时、算子执行耗时数据。与ACL_PROF_TASK_TIME相比,由于不采集算子基本信息数据,采集时性能开销较小,可更精准统计相关耗时数据。
- ACL_PROF_AICORE_METRICS:表示采集AI Core性能指标数据,逻辑或时必须包括该宏,aicore_metrics入参处配置的性能指标采集项才有效。
- ACL_PROF_TASK_MEMORY:控制CANN算子的内存占用情况采集开关。仅采集GE组件算子。
- ACL_PROF_AICPU:表示采集AI CPU任务的开始、结束数据。
- ACL_PROF_L2CACHE:表示采集L2 Cache数据。
- ACL_PROF_HCCL_TRACE:控制hccl数据采集开关。
- ACL_PROF_MSPROFTX:获取用户和上层框架程序输出的性能数据。
- ACL_PROF_RUNTIME_API:控制runtime api性能数据采集开关。
返回值说明prof_config:int。
- 返回非0值表示成功,返回值为返回aclprofConfig类型的指针地址。
- 返回0表示失败。
约束说明- 使用acl.prof.destroy_config接口销毁aclprofConfig类型的数据,如不销毁会导致内存未被释放。
- 与acl.prof.destroy_config接口配对使用,先调用acl.prof.create_config接口再调用acl.prof.destroy_config接口。

父主题: Profiling pyACL API(通过Profiling pyACL API采集并落盘性能数据)

函数:set_config

C函数原型aclError aclprofSetConfig(aclprofConfigType configType, const char *config, size_t configLength)
Python函数ret = acl.prof.set_config(config_type, config)
函数功能acl.prof.create_config接口的扩展接口,用于设置性能数据采集参数。同步接口。 该接口支持多次调用,用户需要保证数据的一致性和准确性。
输入说明config_type:int,用户选择如下多个常量进行逻辑或(例如:ACL_PROF_SYS_HARDWARE_MEM_FREQ | ACL_PROF_SYS_IO_FREQ),作为config_type参数值。每个常量表示某一类性能数据,详细说明如下:
- ACL_PROF_STORAGE_LIMIT = 1:指定落盘目录允许存放的最大文件容量,有效取值范围为[200MB, 4294967296MB]。
- ACL_PROF_SYS_HARDWARE_MEM_FREQ = 3:片上内存、LLC的读写带宽数据采集频率以及acc_pmu数据和SOC传输带宽信息采集频率,范围[1,100]。 不同产品支持情况不同,请以实际实现为准。
- ACL_PROF_LLC_MODE = 4:LLC Profiling采集事件。
- read:读事件,三级缓存读速率。
- write:写事件,三级缓存写速率。默认为read。
- ACL_PROF_SYS_IO_FREQ = 5:NIC采集频率,范围[1,100]。 容器场景下本参数不生效。
- ACL_PROF_DVPP_FREQ = 7:DVPP采集频率,范围[1,100]。
config:str,配置项的参数值。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明先调用acl.prof.set_config接口再调用acl.prof.start接口,可根据需求选择调用该接口。

父主题: Profiling pyACL API(通过Profiling pyACL API采集并落盘性能数据)

函数:destroy_config

C函数原型aclError aclprofDestroyConfig(const aclprofConfig *profilerConfig)
Python函数ret = acl.prof.destroy_config(profiler_config)
函数功能销毁aclprofConfig类型的数据,只能销毁通过acl.prof.create_config接口创建的aclprofConfig类型。
输入说明profiler_config:待销毁的aclprofConfig类型的指针地址。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
约束说明- 与acl.prof.create_config接口配对使用,先调用acl.prof.create_config接口再调用aclprofDestroyConfig接口。
- 同一aclprofConfig数据重复调用acl.prof.destroy_config接口,会出现重复释放内存的报错。

父主题: Profiling pyACL API(通过Profiling pyACL API采集并落盘性能数据)

函数:init

C函数原型aclError aclprofInit(const char *profilerResultPath, size_t length)
Python函数ret = acl.prof.init(profiler_result_path)
函数功能初始化Profiling,目前用于设置保存性能数据的文件的路径。同步接口。
输入说明profiler_result_path:str,指定保存性能数据的文件的路径,此路径为绝对路径。
返回值说明ret:int,错误码。
- 返回0表示成功。
- 返回其它值表示失败。
参考资源接口调用示例,参见Profiling性能数据采集

父主题: Profiling pyACL API(通过Profiling pyACL API采集并落盘性能数据)

在线提单