CANN/runtime算子订阅API # 19-03 订阅算子信息【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime本章节描述算子信息订阅接口用于订阅模型中算子的执行信息类型、名称、耗时等。aclError aclprofModelSubscribe(uint32_t modelId, const aclprofSubscribeConfig *profSubscribeConfig)网络场景下订阅算子的基本信息包括算子名称、算子类型、算子执行耗时等。aclError aclprofModelUnSubscribe(uint32_t modelId)网络场景下取消订阅算子的基本信息包括算子名称、算子类型、算子执行耗时等。aclError aclprofGetOpDescSize(size_t *opDescSize)获取单个算子数据结构的大小单位为Byte。当前版本中约定每个算子数据结构的大小是一样的。aclError aclprofGetOpNum(const void *opInfo, size_t opInfoLen, uint32_t *opNumber)获取指定内存中算子的数量。aclError aclprofGetOpTypeLen(const void *opInfo, size_t opInfoLen, uint32_t index, size_t *opTypeLen)获取算子类型的字符串长度用于内存申请。aclError aclprofGetOpType(const void *opInfo, size_t opInfoLen, uint32_t index, char *opType, size_t opTypeLen)获取指定算子的算子类型名称。aclError aclprofGetOpNameLen(const void *opInfo, size_t opInfoLen, uint32_t index, size_t *opNameLen)获取算子名称的字符串长度用于内存申请。aclError aclprofGetOpName(const void *opInfo, size_t opInfoLen, uint32_t index, char *opName, size_t opNameLen)获取指定算子的算子名称。uint64_t aclprofGetOpStart(const void *opInfo, size_t opInfoLen, uint32_t index)获取算子执行的开始时间单位为ns。uint64_t aclprofGetOpEnd(const void *opInfo, size_t opInfoLen, uint32_t index)获取算子执行的结束时间单位为ns。uint64_t aclprofGetOpDuration(const void *opInfo, size_t opInfoLen, uint32_t index)获取算子执行的耗时时间单位为ns。size_t aclprofGetModelId(const void *opInfo, size_t opInfoLen, uint32_t index)获取指定算子所在模型的ID。aclprofSubscribeOpFlag aclprofGetOpFlag(const void *opInfo, size_t opInfoLen, uint32_t index)获取指定算子的订阅类型标记。const char *aclprofGetOpAttriValue(const void *opInfo, size_t opInfoLen, uint32_t index, aclprofSubscribeOpAttri attri)获取指定算子的属性值。订阅接口使用说明总体约束不能与Profiling数据采集接口的接口交叉调用aclprofModelSubscribe接口和aclprofModelUnSubscribe接口之间不能调用aclprofInit接口、aclprofStart接口、aclprofStop接口和aclprofFinalize接口。接口约束说明接口调用要求aclprofModelSubscribe接口在模型执行之前调用若在模型执行过程中调用aclprofModelSubscribe接口Profiling采集到的数据为调用aclprofModelSubscribe接口之后的数据可能导致数据不完整。aclprofModelSubscribe接口需与aclprofModelUnSubscribe接口配对使用不能在调用aclprofModelUnSubscribe接口前多次调用aclprofModelSubscribe接口重复订阅相同的模型。不能调用aclprofModelSubscribe接口订阅不存在的模型ID。不能调用aclprofModelUnSubscribe接口取消订阅不存在的模型ID或未订阅过的模型ID。如果在同一个Device上加载了多个模型只能对多个模型下发同样的订阅配置。接口调用顺序建议的接口调用顺序如下模型加载--aclprofModelSubscribe接口--aclprofGetOpDescSize接口--aclprofGetOpNum接口--aclprofGetOpType/aclprofGetOpName/aclprofGetOpStart/aclprofGetOpEnd/aclprofGetOpDuration/aclprofGetModelId接口--aclprofModelUnSubscribe接口错误的接口调用顺序示例如下以重复定义同一个模型为例模型1加载--aclprofModelSubscribe接口(指定模型1)--aclprofModelSubscribe接口(指定模型1)--aclprofModelUnSubscribe接口aclprofModelSubscribeaclError aclprofModelSubscribe(uint32_t modelId, const aclprofSubscribeConfig *profSubscribeConfig)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明网络场景下订阅算子的基本信息包括算子名称、算子类型、算子执行耗时等。参数说明参数名输入/输出说明modelId输入待订阅的网络模型的ID。调用aclmdlLoadFromFile接口/aclmdlLoadFromMem接口/aclmdlLoadFromFileWithMem接口/aclmdlLoadFromMemWithMem接口加载模型成功后会返回模型ID。类型定义请参见aclprofSubscribeConfig。profSubscribeConfig输入待订阅的配置信息。需提前调用aclprofCreateSubscribeConfig接口创建aclprofSubscribeConfig类型的数据。返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明与aclprofModelUnSubscribe接口配对使用。aclprofModelUnSubscribeaclError aclprofModelUnSubscribe(uint32_t modelId)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明网络场景下取消订阅算子的基本信息包括算子名称、算子类型、算子执行耗时等。参数说明参数名输入/输出说明modelId输入已订阅的模型的ID。返回值说明返回0表示成功返回其他值表示失败请参见aclError。约束说明与aclprofModelSubscribe接口配对使用。aclprofGetOpDescSizeaclError aclprofGetOpDescSize(size_t *opDescSize)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取单个算子数据结构的大小单位为Byte。当前版本中约定每个算子数据结构的大小是一样的。建议用户新建一个线程在新线程内调用该接口否则可能阻塞主线程中的其它任务调度。参数说明参数名输入/输出说明opDescSize输出算子数据结构的大小。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclprofGetOpNumaclError aclprofGetOpNum(const void *opInfo, size_t opInfoLen, uint32_t *opNumber)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取指定内存中算子的数量。建议用户新建一个线程在新线程内调用该接口否则可能阻塞主线程中的其它任务调度。参数说明参数名输入/输出说明opInfo输入指定算子信息的内存地址。调用aclprofGetOpDescSize接口获取到单个算子数据结构的大小后用户需按照“单个算子数据结构的大小*整数系数”得到的数值申请内存用于存放Profiling采集到的算子信息数据作为本接口的输入。opInfoLen输入算子信息的长度。opNumber输出算子的数量。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclprofGetOpTypeLenaclError aclprofGetOpTypeLen(const void *opInfo, size_t opInfoLen, uint32_t index, size_t *opTypeLen)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取算子类型的字符串长度用于内存申请。建议用户新建一个线程在新线程内调用该接口否则可能阻塞主线程中的其它任务调度。参数说明参数名输入/输出说明opInfo输入包含算子信息的地址。opInfoLen输入算子信息的长度。index输入指定获取第几个算子的算子类型名称。用户调用aclprofGetOpNum接口获取算子数量后这个index的取值范围[0, (算子数量-1)]。opTypeLen输出opType的长度。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclprofGetOpTypeaclError aclprofGetOpType(const void *opInfo, size_t opInfoLen, uint32_t index, char *opType, size_t opTypeLen)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取指定算子的算子类型名称。建议用户新建一个线程在新线程内调用该接口否则可能阻塞主线程中的其它任务调度。参数说明参数名输入/输出说明opInfo输入包含算子信息的地址。opInfoLen输入算子信息的长度。index输入指定获取第几个算子的算子类型名称。用户调用aclprofGetOpNum接口获取算子数量后这个index的取值范围[0, (算子数量-1)]。opType输出算子类型名称。opTypeLen输入opType的实际内存申请长度。取值范围建议不小于aclprofGetOpTypeLen否则内容会有截断。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclprofGetOpNameLenaclError aclprofGetOpNameLen(const void *opInfo, size_t opInfoLen, uint32_t index, size_t *opNameLen)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取算子名称的字符串长度用于内存申请。建议用户新建一个线程在新线程内调用该接口否则可能阻塞主线程中的其它任务调度。参数说明参数名输入/输出说明opInfo输入包含算子信息的地址。opInfoLen输入算子信息的长度。index输入指定获取第几个算子的算子名称长度。用户调用aclprofGetOpNum接口获取算子数量后这个index的取值范围[0, (算子数量-1)]。opNameLen输出opName的实际内存申请长度。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclprofGetOpNameaclError aclprofGetOpName(const void *opInfo, size_t opInfoLen, uint32_t index, char *opName, size_t opNameLen)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取指定算子的算子名称。建议用户新建一个线程在新线程内调用该接口否则可能阻塞主线程中的其它任务调度。参数说明参数名输入/输出说明opInfo输入包含算子信息的地址。opInfoLen输入算子信息的长度。index输入指定获取第几个算子的算子名称。用户调用aclprofGetOpNum接口获取算子数量后这个index的取值范围[0, (算子数量-1)]。opName输出算子名称。opNameLen输入opName的实际内存申请长度。取值范围建议不小于aclprofGetOpNameLen否则内容会有截断。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclprofGetOpStartuint64_t aclprofGetOpStart(const void *opInfo, size_t opInfoLen, uint32_t index)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取算子执行的开始时间单位为ns。建议用户新建一个线程在新线程内调用该接口否则可能阻塞主线程中的其它任务调度。参数说明参数名输入/输出说明opInfo输入包含算子信息的地址。opInfoLen输入算子信息的长度。index输入指定获取第几个算子执行的开始时间。用户调用aclprofGetOpNum接口获取算子数量后这个index的取值范围[0, (算子数量-1)]。返回值说明算子执行的开始时间。aclprofGetOpEnduint64_t aclprofGetOpEnd(const void *opInfo, size_t opInfoLen, uint32_t index)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取算子执行的结束时间单位为ns。建议用户新建一个线程在新线程内调用该接口否则可能阻塞主线程中的其它任务调度。参数说明参数名输入/输出说明opInfo输入包含算子信息的地址。opInfoLen输入算子信息的长度。index输入指定获取第几个算子执行的结束时间。用户调用aclprofGetOpNum接口获取算子数量后这个index的取值范围[0, (算子数量-1)]。返回值说明算子执行结束时间。aclprofGetOpDurationuint64_t aclprofGetOpDuration(const void *opInfo, size_t opInfoLen, uint32_t index)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取算子执行的耗时时间单位为ns。建议用户新建一个线程在新线程内调用该接口否则可能阻塞主线程中的其它任务调度。参数说明参数名输入/输出说明opInfo输入包含算子信息的地址。opInfoLen输入算子信息的长度。index输入指定获取第几个算子执行的耗时时间。用户调用aclprofGetOpNum接口获取算子数量后这个index的取值范围[0, (算子数量-1)]。返回值说明算子执行的耗时时间。aclprofGetModelIdsize_t aclprofGetModelId(const void *opInfo, size_t opInfoLen, uint32_t index)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取指定算子所在模型的ID。建议用户新建一个线程在新线程内调用该接口否则可能阻塞主线程中的其它任务调度。参数说明参数名输入/输出说明opInfo输入包含算子信息的地址。opInfoLen输入算子信息的长度。index输入指定获取第几个算子所在模型的ID。用户调用aclprofGetOpNum接口获取算子数量后这个index的取值范围[0, (算子数量-1)]。返回值说明模型的ID。aclprofGetOpFlagaclprofSubscribeOpFlag aclprofGetOpFlag(const void *opInfo, size_t opInfoLen, uint32_t index)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取指定算子的订阅类型标记。建议用户新建一个线程在新线程内调用该接口否则可能阻塞主线程中的其它任务调度。参数说明参数名输入/输出说明opInfo输入包含算子信息的地址。opInfoLen输入算子信息的长度。index输入指定获取第几个算子的订阅类型标记。用户调用aclprofGetOpNum接口获取算子数量后这个index的取值范围[0, (算子数量-1)]。返回值说明返回aclprofSubscribeOpFlag枚举类型。typedef enum { ACL_SUBSCRIBLE_OP 0, // 算子 ACL_SUBSCRIBLE_SUBGRAPH 1, // 子图 ACL_SUBSCRIBLE_OP_THREAD 2, // 算子thread ACL_SUBSCRIBLE_NONE 0xFF, } aclprofSubscribeOpFlag;aclprofGetOpAttriValueconst char *aclprofGetOpAttriValue(const void *opInfo, size_t opInfoLen, uint32_t index, aclprofSubscribeOpAttri attri)产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品支持Atlas 训练系列产品支持IPV350不支持功能说明获取指定算子的属性值。建议用户新建一个线程在新线程内调用该接口否则可能阻塞主线程中的其它任务调度。参数说明参数名输入/输出说明opInfo输入包含算子信息的地址。opInfoLen输入算子信息的长度。index输入指定获取第几个算子的属性值。用户调用aclprofGetOpNum接口获取算子数量后这个index的取值范围[0, (算子数量-1)]。attri输入指定获取的算子属性。类型为aclprofSubscribeOpAttri。支持的取值如下- ACL_SUBSCRIBE_ATTRI_THREADID(0)获取线程ID属性。- ACL_SUBSCRIBE_ATTRI_NONE无效属性标记不用于获取有效属性值。返回值说明返回指定算子属性值的字符串指针。返回NULL表示获取失败例如attri传入无效值或当前属性不支持获取。【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考