已合并
【fix】: remove aclgrphCalibration and set rt2 runinternal thread name #4038
tang-haojie创建于 7月16日
【fix】: remove aclgrphCalibration and set rt2 runinternal thread name #4038
已合并
共 4 个文件变更+2-131
| @@ -7,7 +7,6 @@ | |||
| 7 | - [aclgrphBuildModel](cpp\ge\aclgrphBuildModel.md) | 7 | - [aclgrphBuildModel](cpp\ge\aclgrphBuildModel.md) |
| 8 | - [aclgrphBundleBuildModel](cpp\ge\aclgrphBundleBuildModel.md) | 8 | - [aclgrphBundleBuildModel](cpp\ge\aclgrphBundleBuildModel.md) |
| 9 | - [aclgrphBundleSaveModel](cpp\ge\aclgrphBundleSaveModel.md) | 9 | - [aclgrphBundleSaveModel](cpp\ge\aclgrphBundleSaveModel.md) |
| 10 | - - [aclgrphCalibration](cpp\ge\aclgrphCalibration.md) | ||
| 11 | - [aclgrphConvertToWeightRefreshableGraphs](cpp\ge\aclgrphConvertToWeightRefreshableGraphs.md) | 10 | - [aclgrphConvertToWeightRefreshableGraphs](cpp\ge\aclgrphConvertToWeightRefreshableGraphs.md) |
| 12 | - [aclgrphDumpGraph](cpp\ge\aclgrphDumpGraph.md) | 11 | - [aclgrphDumpGraph](cpp\ge\aclgrphDumpGraph.md) |
| 13 | - [aclgrphGetIRVersion](cpp\ge\aclgrphGetIRVersion.md) | 12 | - [aclgrphGetIRVersion](cpp\ge\aclgrphGetIRVersion.md) |
| @@ -1,62 +0,0 @@ | |||
| 1 | -# aclgrphCalibration | ||
| 2 | - | ||
| 3 | -## 产品支持情况 | ||
| 4 | - | ||
| 5 | -<!-- npu="950" id1 --> | ||
| 6 | -- Ascend 950PR/Ascend 950DT:支持 | ||
| 7 | -<!-- end id1 --> | ||
| 8 | -<!-- npu="A3" id2 --> | ||
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | ||
| 10 | -<!-- end id2 --> | ||
| 11 | -<!-- npu="910b" id3 --> | ||
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 | ||
| 13 | -<!-- end id3 --> | ||
| 14 | -<!-- npu="310b" id4 --> | ||
| 15 | -- Atlas 200I/500 A2 推理产品:支持 | ||
| 16 | -<!-- end id4 --> | ||
| 17 | -<!-- npu="310p" id5 --> | ||
| 18 | -- Atlas 推理系列产品:支持 | ||
| 19 | -<!-- end id5 --> | ||
| 20 | -<!-- npu="910" id6 --> | ||
| 21 | -- Atlas 训练系列产品:支持 | ||
| 22 | -<!-- end id6 --> | ||
| 23 | -<!-- npu="IPV350" id7 --> | ||
| 24 | -- IPV350:支持 | ||
| 25 | -<!-- end id7 --> | ||
| 26 | -<!-- @ref: ge/res/docs/zh/api/graph_engine_api/cpp/ge/aclgrphCalibration_res.md#id1 --> | ||
| 27 | - | ||
| 28 | -## 头文件/库文件 | ||
| 29 | - | ||
| 30 | -- 头文件:\#include <amct/acl\_graph\_calibration.h\> | ||
| 31 | -- 库文件:libamctacl.so | ||
| 32 | - | ||
| 33 | -## 功能说明 | ||
| 34 | - | ||
| 35 | -将非量化Graph自动修改为量化后的Graph。详细使用场景请参见[量化](../../../../user_guides/graph_dev/more_features/quantization.md)。 | ||
| 36 | - | ||
| 37 | -## 函数原型 | ||
| 38 | - | ||
| 39 | -```c++ | ||
| 40 | -graphStatus aclgrphCalibration(ge::Graph &graph, const std::map<ge::AscendString, ge::AscendString> &quantizeConfigs) | ||
| 41 | -``` | ||
| 42 | - | ||
| 43 | -## 参数说明 | ||
| 44 | - | ||
| 45 | -| 参数名 | 输入/输出 | 说明 | | ||
| 46 | -| --- | --- | --- | | ||
| 47 | -| graph | 输入 | 待修改的用户原始Graph。 | | ||
| 48 | -| quantizeConfigs | 输入 | map表,key为参数类型,value为参数值,均为字符串格式,描述执行接口所需要的配置选项。具体配置参数如下所示:<br><br> - INPUT_DATA_DIR:必填,用于计算量化因子的数据bin文件路径,建议传入不少于一个batch的数据。如果模型有多个输入,则输入数据文件以英文逗号分隔。<br> - INPUT_SHAPE:必填,输入数据的shape。例如:"input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2"。指定的节点必须放在双引号中,节点中间使用英文分号分隔。input_name必须是Graph中的节点名称。<br> - SOC_VERSION:必填,进行训练后量化校准推理时,所使用的芯片名称。<soc_version>查询方法为:<br>针对如下产品:在安装AI处理器的服务器执行npu-smi info命令进行查询,获取Name信息。实际配置值为AscendName,例如Name取值为xxxyy,实际配置值为Ascendxxxyy。Atlas A2 训练系列产品/Atlas A2 推理系列产品<br>Atlas 200I/500 A2 推理产品<br>Atlas 推理系列产品<br>Atlas 训练系列产品<br>针对Atlas A3 训练系列产品/Atlas A3 推理系列产品,在安装AI处理器的服务器执行npu-smi info -t board -i id -c chip_id命令进行查询,获取Chip Name和NPU Name信息,实际配置值为Chip Name_NPU Name。例如Chip Name取值为Ascendxxx,NPU Name取值为1234,实际配置值为Ascendxxx_1234。其中:id:设备id,通过npu-smi info -l命令查出的NPU ID即为设备id。chip_id:芯片id,通过npu-smi info -m命令查出的Chip ID即为芯片id。<br>针对Ascend 950PR/Ascend 950DT,在安装AI处理器的服务器执行npu-smi info -t board -i id命令进行查询,获取Chip Name和NPU Name信息,实际配置值为Chip Name_NPU Name。例如Chip Name取值为Ascendxxx,NPU Name取值为1234,实际配置值为Ascendxxx_1234。其中,id为设备id,通过npu-smi info -l命令查出的NPU ID即为设备id。<br><br>BS9SX1A AI处理器参数值:BS9SX1AA、BS9SX1AB、BS9SX1AC<br>BS9SX2A AI处理器参数值:BS9SX2A<br>IPV350参数值:Ascend035<br> - 针对如下产品:在安装AI处理器的服务器执行npu-smi info命令进行查询,获取Name信息。实际配置值为AscendName,例如Name取值为xxxyy,实际配置值为Ascendxxxyy。Atlas A2 训练系列产品/Atlas A2 推理系列产品<br>Atlas 200I/500 A2 推理产品<br>Atlas 推理系列产品<br>Atlas 训练系列产品<br> - 针对Atlas A3 训练系列产品/Atlas A3 推理系列产品,在安装AI处理器的服务器执行npu-smi info -t board -i id -c chip_id命令进行查询,获取Chip Name和NPU Name信息,实际配置值为Chip Name_NPU Name。例如Chip Name取值为Ascendxxx,NPU Name取值为1234,实际配置值为Ascendxxx_1234。其中:id:设备id,通过npu-smi info -l命令查出的NPU ID即为设备id。chip_id:芯片id,通过npu-smi info -m命令查出的Chip ID即为芯片id。<br> - id:设备id,通过npu-smi info -l命令查出的NPU ID即为设备id。<br> - chip_id:芯片id,通过npu-smi info -m命令查出的Chip ID即为芯片id。<br> - 针对Ascend 950PR/Ascend 950DT,在安装AI处理器的服务器执行npu-smi info -t board -i id命令进行查询,获取Chip Name和NPU Name信息,实际配置值为Chip Name_NPU Name。例如Chip Name取值为Ascendxxx,NPU Name取值为1234,实际配置值为Ascendxxx_1234。其中,id为设备id,通过npu-smi info -l命令查出的NPU ID即为设备id。<br> - INPUT_FORMAT:选填,输入数据的排布格式,支持"NCHW"、"NHWC"、"ND"。<br> - INPUT_FP16_NODES:选填,指定输入数据类型为FP16的输入节点名称。<br> - CONFIG_FILE:选填,用于配置高级选项的配置文件路径。配置文件的示例请参考[量化简易配置文件](../../../../user_guides/graph_dev/appendix/quantization_config.md#量化简易配置文件)。<br> - LOG_LEVEL:选填,设置训练后量化时的日志等级,该参数只控制训练后量化过程中显示的日志级别,默认显示info级别:debug:输出debug/info/warning/error/event级别的日志信息。info:输出info/warning/error/event级别的日志信息。warning:输出warning/error/event级别的日志信息。error:输出error/event级别的日志信息。<br>此外,训练后量化过程中的日志落盘信息由AMCT_LOG_DUMP环境变量进行控制:export AMCT_LOG_DUMP=1:日志落盘到当前路径的“amct_log_{timestamp}/amct_acl.log”文件中,不保存量化因子record文件和graph文件。export AMCT_LOG_DUMP=2:日志落盘到当前路径的“amct_log_{timestamp}/amct_acl.log”文件中,同时在“amct_log_{timestamp}”目录下保存量化因子record文件。export AMCT_LOG_DUMP=3:日志落盘到当前路径的“amct_log_{timestamp}/amct_acl.log”文件中,同时在“amct_log_{timestamp}”目录下保存量化因子record文件和包含量化过程中各阶段图描述信息的graph文件。<br><br>为防止日志文件、record文件、graph文件持续落盘导致磁盘被写满,请及时清理这些文件。<br>如果用户配置了ASCEND_WORK_PATH环境变量,则上述日志、量化因子record文件和graph文件存储到该环境变量指定的路径下,例如ASCEND_WORK_PATH=/home/test,则存储路径为:/home/test/amct_acl/amct_log_{pid}_时间戳。其中,amct_acl模型转换过程中会自动创建,{pid}为进程号。<br> 说明: 上述日志文件、record文件、graph文件重新执行量化时会被覆盖,请用户自行进行保存。此外,由于生成的日志文件大小和所要量化模型层数有关,请用户确保服务器有足够空间:<br>以量化resnet101模型为例,日志级别设置为INFO,日志文件大小为12KB左右,中间临时文件大小为260MB左右;日志级别设置为DEBUG,日志文件大小为390KB左右,中间临时文件大小为430MB左右。<br> - debug:输出debug/info/warning/error/event级别的日志信息。<br> - info:输出info/warning/error/event级别的日志信息。<br> - warning:输出warning/error/event级别的日志信息。<br> - error:输出error/event级别的日志信息。<br> - export AMCT_LOG_DUMP=1:日志落盘到当前路径的“amct_log_{timestamp}/amct_acl.log”文件中,不保存量化因子record文件和graph文件。<br> - export AMCT_LOG_DUMP=2:日志落盘到当前路径的“amct_log_{timestamp}/amct_acl.log”文件中,同时在“amct_log_{timestamp}”目录下保存量化因子record文件。<br> - export AMCT_LOG_DUMP=3:日志落盘到当前路径的“amct_log_{timestamp}/amct_acl.log”文件中,同时在“amct_log_{timestamp}”目录下保存量化因子record文件和包含量化过程中各阶段图描述信息的graph文件。<br> - OUT_NODES:选填,用户Graph的输出节点名。<br> - DEVICE_ID:选填,指定设备ID,默认为0。Ascend 950PR/Ascend 950DT,支持该选项。Atlas 训练系列产品,支持该选项。Atlas 推理系列产品,支持该选项。Atlas 200I/500 A2 推理产品,支持该选项。Atlas A2 训练系列产品/Atlas A2 推理系列产品,支持该选项。Atlas A3 训练系列产品/Atlas A3 推理系列产品,支持该选项。BS9SX1A AI处理器,不支持该选项。BS9SX2A AI处理器,不支持该选项。<br> - Ascend 950PR/Ascend 950DT,支持该选项。<br> - Atlas 训练系列产品,支持该选项。<br> - Atlas 推理系列产品,支持该选项。<br> - Atlas 200I/500 A2 推理产品,支持该选项。<br> - Atlas A2 训练系列产品/Atlas A2 推理系列产品,支持该选项。<br> - Atlas A3 训练系列产品/Atlas A3 推理系列产品,支持该选项。<br> - BS9SX1A AI处理器,不支持该选项。<br> - BS9SX2A AI处理器,不支持该选项。<br> - infer_aicore_num:必填,进行训练后量化校准推理时,使用的AI Core数目,昇腾610 AI处理器和BS9SX1A AI处理器取值范围为{1,2,4,8,10};BS9SX2A AI处理器取值范围为{1,2,4}。<br> - infer_aicore_num:选填,进行训练后量化校准推理时,使用的AI Core核数,查询方法请参见[算子编译与图编译](./aclgrphBuildInitialize_config_params/operator_and_graph_compilation.md) > AICORE_NUM<br> - groupId:选填,进行训练后量化校准推理时,使用的算力Group ID,取值范围为{0,1,2,3},默认为0。后续上板推理时,先调用aclrtGetAllGroupInfo接口获取所有Group信息,然后再调用aclrtSetGroup接口指定当前运算使用哪个Group的算力。接口详细说明请参见《Runtime运行时 API》中的“算力Group查询与设置”。<br> - IP_ADDR:指定NCS所在服务器的IP地址。Ascend 950PR/Ascend 950DT,不支持该选项。Atlas 训练系列产品,不支持该选项。Atlas 推理系列产品,不支持该选项。Atlas 200I/500 A2 推理产品,Ascend RC场景支持该选项,且必填。Atlas A2 训练系列产品/Atlas A2 推理系列产品,不支持该选项。Atlas A3 训练系列产品/Atlas A3 推理系列产品,不支持该选项。BS9SX1A AI处理器,支持该选项。BS9SX2A AI处理器,支持该选项。<br> - Ascend 950PR/Ascend 950DT,不支持该选项。<br> - Atlas 训练系列产品,不支持该选项。<br> - Atlas 推理系列产品,不支持该选项。<br> - Atlas 200I/500 A2 推理产品,Ascend RC场景支持该选项,且必填。<br> - Atlas A2 训练系列产品/Atlas A2 推理系列产品,不支持该选项。<br> - Atlas A3 训练系列产品/Atlas A3 推理系列产品,不支持该选项。<br> - BS9SX1A AI处理器,支持该选项。<br> - BS9SX2A AI处理器,支持该选项。<br> - PORT:指定NCS所在服务器端口。Ascend 950PR/Ascend 950DT,不支持该选项。Atlas 训练系列产品,不支持该选项。Atlas 推理系列产品,不支持该选项。Atlas 200I/500 A2 推理产品,Ascend RC场景支持该选项,且必填。Atlas A2 训练系列产品/Atlas A2 推理系列产品,不支持该选项。Atlas A3 训练系列产品/Atlas A3 推理系列产品,不支持该选项。BS9SX1A AI处理器,支持该选项。BS9SX2A AI处理器,支持该选项。<br> - Ascend 950PR/Ascend 950DT,不支持该选项。<br> - Atlas 训练系列产品,不支持该选项。<br> - Atlas 推理系列产品,不支持该选项。<br> - Atlas 200I/500 A2 推理产品,Ascend RC场景支持该选项,且必填。<br> - Atlas A2 训练系列产品/Atlas A2 推理系列产品,不支持该选项。<br> - Atlas A3 训练系列产品/Atlas A3 推理系列产品,不支持该选项。<br> - BS9SX1A AI处理器,支持该选项。<br> - BS9SX2A AI处理器,支持该选项。<br> - INSERT_OP_CONF:插入算子的配置文件路径与文件名,例如Aipp预处理算子。配置文件路径和文件名:支持大小写字母(a-z,A-Z)、数字(0-9)、下划线(_)、中划线(-)、句点(.)、中文字符;文件后缀不局限于.cfg格式,但是配置文件中的内容需要满足prototxt格式。<br>配置文件的内容示例如下:<br>aipp_op {<br> aipp_mode:static<br> input_format:YUV420SP_U8<br> csc_switch:true<br> var_reci_chn_0:0.00392157<br> var_reci_chn_1:0.00392157<br> var_reci_chn_2:0.00392157<br>}<br>关于配置文件详细配置以及参数说明,请参见《ATC离线模型编译工具》>高级功能 > 开启AIPP章节。 | | ||
| 49 | - | ||
| 50 | -## 返回值说明 | ||
| 51 | - | ||
| 52 | -| 参数名 | 类型 | 说明 | | ||
| 53 | -| --- | --- | --- | | ||
| 54 | -| - | graphStatus | GRAPH_SUCCESS(0):成功。<br>其他:失败。 | | ||
| 55 | - | ||
| 56 | -## 约束说明 | ||
| 57 | - | ||
| 58 | -- 对于已经被插入量化算子的Graph不支持进行量化。 | ||
| 59 | -- 支持量化的层及约束请参考[支持量化的层及约束](../../../../user_guides/graph_dev/appendix/quantization_config.md)。 | ||
| 60 | -- 使用配置文件中的**calibration**训练后量化功能时,只支持**带NPU设备**的安装场景,详细介绍请参见《CANN 软件安装》手册搭建对应产品环境。 | ||
| 61 | -- Atlas 200I/500 A2 推理产品Ascend RC场景,还需要在运行环境上安装NCS软件,并配置密钥证书,请参见《AOE调优工具》\>AOE工具(Ascend RC)\>环境准备。 | ||
| 62 | -- 使用配置文件中的**calibration**训练后量化功能时,只支持**带NPU设备**的安装场景,因此需要在运行环境上安装NCS软件,并配置密钥证书,请参见《AOE调优工具》\>软件安装\>NCS安装和启动(运行环境)。 | ||
| @@ -14,74 +14,6 @@ | |||
| 14 | **图 2** 算子融合原理 | 14 | **图 2** 算子融合原理 |
| 15 |  | 15 |  |
| 16 | 16 | ||
| 17 | -量化又分为自动量化和手工量化: | ||
| 18 | - | ||
| 19 | -- 自动量化:通过aclgrphCalibration接口来自动插入量化算子,量化过程中会对模型中的某些结构做算子融合。推荐使用自动量化。 | ||
| 20 | -- 手工量化:手动修改模型,插入量化算子。 | ||
| 21 | - | ||
| 22 | -## 自动量化 | ||
| 23 | - | ||
| 24 | -本节介绍如何通过aclgrphCalibration接口对Graph进行自动量化。 | ||
| 25 | - | ||
| 26 | -### 功能介绍 | ||
| 27 | - | ||
| 28 | -通过调用[aclgrphCalibration](../../../api/graph_engine_api/cpp/ge/aclgrphCalibration.md)接口对非量化的Graph进行自动量化。量化过程中会对模型中的某些结构做算子融合,融合后Graph结构得到优化,从而提升网络推理性能。具体支持的融合功能请参见[支持的融合功能](../appendix/quantization_config.md#支持的融合功能)。支持量化的层及约束请参考[支持量化的层及约束](../appendix/quantization_config.md)。 | ||
| 29 | - | ||
| 30 | -使用该特性时,需要单独安装AMCT(acl)软件包,该包的获取以及安装方法请参见《AMCT模型压缩工具》中的“准备环境 \> 获取软件包、上传软件包、安装工具”章节。 | ||
| 31 | - | ||
| 32 | -### 调用示例 | ||
| 33 | - | ||
| 34 | -本章节以TensorFlow框架网络模型量化为例进行说明。 | ||
| 35 | - | ||
| 36 | -1. 添加头文件。 | ||
| 37 | - | ||
| 38 | - ```c++ | ||
| 39 | - #include "amct/acl_graph_calibration.h" | ||
| 40 | - #include "amct/acl_calibration_configs.h" | ||
| 41 | - #include "amct/amct_error_code.h" | ||
| 42 | - ``` | ||
| 43 | - | ||
| 44 | -2. 通过解析或手动构造方式创建Graph对象。 | ||
| 45 | - | ||
| 46 | - ```c++ | ||
| 47 | - #include "parser/tensorflow_parser.h" | ||
| 48 | - | ||
| 49 | - ge::Graph graph("origin"); | ||
| 50 | - std::map<ge::AscendString, ge::AscendString> parseOptions; | ||
| 51 | - auto ret = ge::aclgrphParseTensorFlow("./path/tf_test.pb", parseOptions, graph); | ||
| 52 | - ``` | ||
| 53 | - | ||
| 54 | -3. 定义aclgrphCalibration接口所需配置参数。 | ||
| 55 | - | ||
| 56 | - ```c++ | ||
| 57 | - std::map<ge::AscendString, ge::AscendString> quantizeConfigs = {}; | ||
| 58 | - quantizeConfigs[ge::AscendString(amct::aclCaliConfigs::INPUT_DATA_DIR)] = ge::AscendString("./path/cali_data.bin"); | ||
| 59 | - quantizeConfigs[ge::AscendString(amct::aclCaliConfigs::INPUT_SHAPE)] = ge::AscendString("input:16,224,224,3"); | ||
| 60 | - quantizeConfigs[ge::AscendString(amct::aclCaliConfigs::SOC_VERSION)] = ge::AscendString("SOC_VERSION"); // SOC_VERSION请配置为实际的AI处理器型号 | ||
| 61 | - ``` | ||
| 62 | - | ||
| 63 | - 如果需要自行控制量化过程,可以使用CONFIG\_FILE参数项传入控制量化过程的简易配置文件。配置文件的示例请参考[量化简易配置文件](../appendix/quantization_config.md#量化简易配置文件)。 | ||
| 64 | - | ||
| 65 | - CONFIG\_FILE参数的配置示例如下: | ||
| 66 | - | ||
| 67 | - ```c++ | ||
| 68 | - quantizeConfigs[ge::AscendString(amct::aclCaliConfigs::CONFIG_FILE)]=ge::AscendString("./calibration.cfg"); | ||
| 69 | - ``` | ||
| 70 | - | ||
| 71 | -4. 调用接口执行量化改图。 | ||
| 72 | - | ||
| 73 | - ```c++ | ||
| 74 | - ret = ge::aclgrphCalibration(graph, quantizeConfigs); | ||
| 75 | - if (ret != ge::GRAPH_SUCCESS) { | ||
| 76 | - return FAILED; | ||
| 77 | - } | ||
| 78 | - return SUCCESS; | ||
| 79 | - ``` | ||
| 80 | - | ||
| 81 | -> [!NOTE]说明 | ||
| 82 | -> | ||
| 83 | ->编译上述程序的脚本时需要链接libamctacl.so,并添加链接时动态库的搜索路径$\{ASCEND\_PATH\}/compiler/lib64,其中ASCEND\_PATH为CANN软件包安装路径,以root用户默认安装路径为例,/usr/local/Ascend/cann。 | ||
| 84 | - | ||
| 85 | ## 手工量化 | 17 | ## 手工量化 |
| 86 | 18 | ||
| 87 | 本节介绍如何手动修改模型插入量化算子,实现量化功能。 | 19 | 本节介绍如何手动修改模型插入量化算子,实现量化功能。 |
| @@ -9,6 +9,7 @@ | |||
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | + | ||
| 12 | 13 | ||
| 13 | 14 | ||
| 14 | 15 | ||
| @@ -230,6 +231,7 @@ Status HybridModelAsyncExecutor::Init(const aclrtStream stream) { | |||
| 230 | } | 231 | } |
| 231 | 232 | ||
| 232 | Status HybridModelAsyncExecutor::RunInternal() { | 233 | Status HybridModelAsyncExecutor::RunInternal() { |
| 234 | + SET_THREAD_NAME(pthread_self(), "ge_rt2_mdlrun"); | ||
| 233 | const auto device_id = static_cast<int32_t>(device_id_); | 235 | const auto device_id = static_cast<int32_t>(device_id_); |
| 234 | GELOGD("Hybrid model start. model_id = %u, device_id = %u", model_id_, device_id_); | 236 | GELOGD("Hybrid model start. model_id = %u, device_id = %u", model_id_, device_id_); |
| 235 | GE_CHK_ACL_RET(aclrtSetDevice(device_id)); | 237 | GE_CHK_ACL_RET(aclrtSetDevice(device_id)); |
🔴 Critical
在
RunInternal()方法中新增了对SET_THREAD_NAME(pthread_self(), "ge_rt2_mdlrun")的调用(第 233 行),但该文件未引入定义该宏的头文件common/compile_profiling/ge_call_wrapper.h。通过检查项目内其他使用
SET_THREAD_NAME的文件(model_executor.cc、davinci_model.cc、rt_v2_stage_state.cc、hybrid_model_rt_v2_executor.cc等),它们均显式#include "common/compile_profiling/ge_call_wrapper.h"。当前文件仅引入了common/profiling_definitions.h,该头文件不包含ge_call_wrapper.h,也未通过其他包含链间接引入。后果:编译时
SET_THREAD_NAME为未定义标识符,导致编译失败。建议:在文件头部 #include 区域添加对
ge_call_wrapper.h的引用,参照其他使用 SET_THREAD_NAME 的文件的标准做法。建议加在#include "common/profiling_definitions.h"之后。