已合并
fix examples and geir #445
liuyufan创建于 2025年12月19日
fix examples and geir #445
已合并
liuyufan创建于 2025年12月19日
3 个文件变更+11-5
@@ -114,7 +114,7 @@ ARCH_INFO=$(uname -m)
114 114 
115export INCLUDE_PATH="${ASCEND_HOME_PATH}/include"115export INCLUDE_PATH="${ASCEND_HOME_PATH}/include"
116export ACLNN_INCLUDE_PATH="${INCLUDE_PATH}/aclnn"116export ACLNN_INCLUDE_PATH="${INCLUDE_PATH}/aclnn"
117-export COMPILER_INCLUDE_PATH="${ASCEND_HOME_PATH}/compiler/include"117+export COMPILER_INCLUDE_PATH="${ASCEND_HOME_PATH}/include"
118export GRAPH_INCLUDE_PATH="${COMPILER_INCLUDE_PATH}/graph"118export GRAPH_INCLUDE_PATH="${COMPILER_INCLUDE_PATH}/graph"
119export EXTERNAL_INCLUDE_PATH="${COMPILER_INCLUDE_PATH}/external"119export EXTERNAL_INCLUDE_PATH="${COMPILER_INCLUDE_PATH}/external"
120export GE_INCLUDE_PATH="${COMPILER_INCLUDE_PATH}/ge"120export GE_INCLUDE_PATH="${COMPILER_INCLUDE_PATH}/ge"
@@ -122,8 +122,8 @@ export INC_INCLUDE_PATH="${ASCEND_OPP_PATH}/built-in/op_proto/inc"
122export LINUX_INCLUDE_PATH="${ASCEND_HOME_PATH}/${ARCH_INFO}-linux/include"122export LINUX_INCLUDE_PATH="${ASCEND_HOME_PATH}/${ARCH_INFO}-linux/include"
123export EAGER_LIBRARY_OPP_PATH="${ASCEND_OPP_PATH}/lib64"123export EAGER_LIBRARY_OPP_PATH="${ASCEND_OPP_PATH}/lib64"
124export EAGER_LIBRARY_PATH="${ASCEND_HOME_PATH}/lib64"124export EAGER_LIBRARY_PATH="${ASCEND_HOME_PATH}/lib64"
125-export GRAPH_LIBRARY_STUB_PATH="${ASCEND_HOME_PATH}/compiler/lib64/stub"125+export GRAPH_LIBRARY_STUB_PATH="${ASCEND_HOME_PATH}/lib64/stub"
126-export GRAPH_LIBRARY_PATH="${ASCEND_HOME_PATH}/compiler/lib64"126+export GRAPH_LIBRARY_PATH="${ASCEND_HOME_PATH}/lib64"
127CANN_3RD_LIB_PATH="${BUILD_PATH}/third_party"127CANN_3RD_LIB_PATH="${BUILD_PATH}/third_party"
128# print usage message128# print usage message
129usage() {129usage() {
@@ -1075,7 +1075,9 @@ build_single_example() {
1075 exit 11075 exit 1
1076 fi1076 fi
1077 elif [[ "${EXAMPLE_MODE}" == "graph" ]]; then1077 elif [[ "${EXAMPLE_MODE}" == "graph" ]]; then
1078- g++ ${file} -I ${GRAPH_INCLUDE_PATH} -I ${GE_INCLUDE_PATH} -I ${EXTERNAL_INCLUDE_PATH} -I ${LINUX_INCLUDE_PATH} -I ${INC_INCLUDE_PATH} -L ${GRAPH_LIBRARY_STUB_PATH} -L ${GRAPH_LIBRARY_PATH} -lgraph -lge_runner -lgraph_base -o test_geir_${example}1078+ g++ ${file} -I ${GRAPH_INCLUDE_PATH} -I ${GE_INCLUDE_PATH} -I ${INCLUDE_PATH} -I ${EXTERNAL_INCLUDE_PATH} -I ${LINUX_INCLUDE_PATH} -I ${INC_INCLUDE_PATH} \
1079+ -L ${GRAPH_LIBRARY_STUB_PATH} -L ${GRAPH_LIBRARY_PATH} \
1080+ -lgraph -lge_runner -lgraph_base -lge_compiler -o test_geir_${example}
1079 fi1081 fi
1080 ${BUILD_PATH}/"${pattern}${example}" && success_example+=(${example}) && echo -e "\n$dotted_line\nRun ${pattern}${example} success.\n$dotted_line\n"1082 ${BUILD_PATH}/"${pattern}${example}" && success_example+=(${example}) && echo -e "\n$dotted_line\nRun ${pattern}${example} success.\n$dotted_line\n"
1081}1083}
@@ -254,6 +254,10 @@ macro(add_category_subdirectory)
254 endforeach()254 endforeach()
255 endif()255 endif()
256 endforeach()256 endforeach()
257+ 
258+ if("${ASCEND_OP_NAME}" STREQUAL "add_example" OR "${ASCEND_OP_NAME}" STREQUAL "add_example_aicpu")
259+ add_subdirectory(examples)
260+ endif()
257endmacro()261endmacro()
258 262 
259function(concat_op_names)263function(concat_op_names)
@@ -49,7 +49,7 @@ class OpDependenciesParser:
49 def __init__(self, build_path):49 def __init__(self, build_path):
50 self.all_ops_dependency = {}50 self.all_ops_dependency = {}
51 self.all_ops_reverse_dependency = {}51 self.all_ops_reverse_dependency = {}
52- self.all_ops = []52+ self.all_ops = ["add_example", "add_example_aicpu"]
CANN-robot
CANN-robotCANN-robot2025年12月19日

代码逻辑和结构: 在OpDependenciesParser.__init__方法中,将self.all_ops的初始化值从空列表[]修改为包含两个示例算子名称["add_example", "add_example_aicpu"]的列表。这一改动引入了硬编码的算子名称,与代码的整体逻辑和设计意图不符。代码的主要功能是从外部配置文件ops_config.txt中解析算子及其依赖关系,self.all_ops列表应动态地从配置文件中加载所有算子,而不是预先定义一部分。这种硬编码方式破坏了代码的通用性和可维护性,可能导致以下问题:1. 如果配置文件中不存在这两个算子,self.all_ops中将包含无效条目。2. 如果后续需要处理其他算子集,此硬编码列表会成为干扰项。3. 在find_all_dependency方法中,会检查算子是否在self.all_ops中,硬编码的条目可能导致本应报错的无效算子被错误地接受。

问题类型: 代码逻辑和结构 文件路径: scripts/util/dependency_parser.py 行号: 52 问题代码:

        self.all_ops = ["add_example", "add_example_aicpu"]

修改建议:

应恢复`self.all_ops`为空列表`[]`的初始化方式。代码的核心逻辑`parse_dependency`方法会通过读取`ops_config.txt`文件,在`parse_line`方法中(第85行)将解析出的算子(`op_type`)动态添加到`self.all_ops`列表中。这是正确且必要的做法,确保了`self.all_ops`的内容完全由外部配置文件决定,增强了代码的灵活性和可配置性。

此评论由代码审查工具自动生成

likedislike
liuyufan
liuyufan
2025年12月19日 评论:
53 self.all_category_ops = {}53 self.all_category_ops = {}
54 self.parse_dependency(build_path)54 self.parse_dependency(build_path)
55 pass55 pass