已合并
feat(aicpu): AICPU built-in整包准入manifest机制 #5693
feat(aicpu): AICPU built-in整包准入manifest机制 #5693
已合并
liu-wei创建于 9月15日
共 8 个文件变更+130-30
@@ -126,6 +126,8 @@ add_cann_version_info_targets()
126# ===================================================126# ===================================================
127init_tf_plugin_modules()127init_tf_plugin_modules()
128 128 
129+include(cmake/config/aicpu_builtin_package_manifest.cmake)
130+ 
129add_subdirectory(common)131add_subdirectory(common)
130if(ENABLE_EXPERIMENTAL)132if(ENABLE_EXPERIMENTAL)
131 add_subdirectory(experimental)133 add_subdirectory(experimental)
@@ -0,0 +1,20 @@
1+# ----------------------------------------------------------------------------
2+# Copyright (c) 2026 Huawei Technologies Co., Ltd.
3+# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4+# CANN Open Software License Agreement Version 2.0 (the "License").
5+# Please refer to the License for details. You may not use this file except in compliance with the License.
6+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7+# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8+# See LICENSE in the root of the software repository for the full text of the License.
9+# ----------------------------------------------------------------------------
10+ 
11+# AICPU built-in package manifest
12+# Default is OFF for all AICPU ops; only list ON entries here.
13+# Key is op name (e.g. "log", "cumsum").
14+# To enable all AICPU ops in built-in package, set FORCE_ALL to ON.
15+ 
16+set(AICPU_BUILTIN_PACKAGE_FORCE_ALL OFF)
17+ 
18+set(AICPU_BUILTIN_PACKAGE_MANIFEST
19+ # Add entries like "new_op=ON" when new AICPU ops should be packaged in built-in.
20+)
@@ -778,23 +778,45 @@ macro(add_all_modules_sources)
778 file(GLOB AICPU_SRCS ${SOURCE_DIR}/op_kernel_aicpu/*_aicpu.cpp)778 file(GLOB AICPU_SRCS ${SOURCE_DIR}/op_kernel_aicpu/*_aicpu.cpp)
779 file(GLOB AICPU_OP_DEF_SRCS ${SOURCE_DIR}/op_kernel_aicpu/*_aicpu_def.cpp)779 file(GLOB AICPU_OP_DEF_SRCS ${SOURCE_DIR}/op_kernel_aicpu/*_aicpu_def.cpp)
780 file(GLOB AICPU_JSON_FILES ${SOURCE_DIR}/op_kernel_aicpu/*.json)780 file(GLOB AICPU_JSON_FILES ${SOURCE_DIR}/op_kernel_aicpu/*.json)
781- if(AICPU_OP_DEF_SRCS)781+ 
782+ # AICPU built-in package manifest: check if this op is allowed in built-in package
783+ # Only affects device-side AICPU (.so + json); host constant folding is not affected.
784+ # Key is op name (e.g. "log", "cumsum")
785+ set(_AICPU_BUILTIN_PKG_ALLOWED OFF)
786+ if(AICPU_BUILTIN_PACKAGE_FORCE_ALL)
787+ set(_AICPU_BUILTIN_PKG_ALLOWED ON)
788+ else()
789+ foreach(_entry ${AICPU_BUILTIN_PACKAGE_MANIFEST})
790+ if(_entry STREQUAL "${OP_NAME}=ON")
791+ set(_AICPU_BUILTIN_PKG_ALLOWED ON)
792+ break()
793+ endif()
794+ endforeach()
795+ endif()
796+ 
797+ if(AICPU_OP_DEF_SRCS AND (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED))
782 set_property(GLOBAL APPEND PROPERTY AICPU_OPDEF_FILES ${AICPU_OP_DEF_SRCS})798 set_property(GLOBAL APPEND PROPERTY AICPU_OPDEF_FILES ${AICPU_OP_DEF_SRCS})
783 endif()799 endif()
784- if(AICPU_JSON_FILES)800+ if(AICPU_JSON_FILES AND (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED))
785 set_property(GLOBAL APPEND PROPERTY AICPU_JSON_FILES ${AICPU_JSON_FILES})801 set_property(GLOBAL APPEND PROPERTY AICPU_JSON_FILES ${AICPU_JSON_FILES})
786 endif()802 endif()
787- if(ENABLE_CUSTOM AND AICPU_SRCS AND NOT DISABLE_AICPU)803+ 
788- if(NOT BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG)804+ if(AICPU_SRCS AND NOT DISABLE_AICPU)
789- add_aicpu_kernel_modules()805+ if(ENABLE_CUSTOM)
790- target_sources(${OPHOST_NAME}_aicpu_obj PRIVATE ${AICPU_SRCS})806+ if(NOT BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG)
791- else()807+ add_aicpu_kernel_modules()
808+ target_sources(${OPHOST_NAME}_aicpu_obj PRIVATE ${AICPU_SRCS})
809+ else()
810+ add_aicpu_cust_kernel_modules(${OP_NAME} "${AICPU_SRCS}")
811+ endif()
812+ elseif(_AICPU_BUILTIN_PKG_ALLOWED AND BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG)
792 add_aicpu_cust_kernel_modules(${OP_NAME} "${AICPU_SRCS}")813 add_aicpu_cust_kernel_modules(${OP_NAME} "${AICPU_SRCS}")
793 endif()814 endif()
794 endif()815 endif()
795 816 
796 # Host-side constant folding: compile aicpu source as x86 OBJECT for libopconstant_folding_math.so817 # Host-side constant folding: compile aicpu source as x86 OBJECT for libopconstant_folding_math.so
797 # Only enabled when HOSTCPU TRUE is passed to add_all_modules_sources818 # Only enabled when HOSTCPU TRUE is passed to add_all_modules_sources
819+ # Not subject to manifest control — preserves existing behavior
798 if(MODULE_HOSTCPU AND BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG AND NOT ENABLE_CUSTOM)820 if(MODULE_HOSTCPU AND BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG AND NOT ENABLE_CUSTOM)
799 file(GLOB AICPU_HOST_SRCS ${SOURCE_DIR}/op_kernel_aicpu/*_aicpu.cpp)821 file(GLOB AICPU_HOST_SRCS ${SOURCE_DIR}/op_kernel_aicpu/*_aicpu.cpp)
800 if(AICPU_HOST_SRCS AND NOT DISABLE_AICPU)822 if(AICPU_HOST_SRCS AND NOT DISABLE_AICPU)
@@ -626,6 +626,11 @@ function(gen_norm_symbol)
626 gen_tf_plugin_symbol()626 gen_tf_plugin_symbol()
627 627 
628 gen_aicpu_const_symbol()628 gen_aicpu_const_symbol()
629+ 
630+ if(NOT DISABLE_AICPU AND ENABLE_PACKAGE)
631+ gen_aicpu_json_symbol(TRUE)
632+ gen_aicpu_kernel_symbol(TRUE)
633+ endif()
629endfunction()634endfunction()
630 635 
631function(gen_cust_symbol)636function(gen_cust_symbol)
@@ -9,14 +9,32 @@
9# ----------------------------------------------------------------------------9# ----------------------------------------------------------------------------
10 10 
11file(GLOB IDENTITY_AICPU_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu*.cpp)11file(GLOB IDENTITY_AICPU_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu*.cpp)
12-if(IDENTITY_AICPU_SRCS)12+file(GLOB IDENTITY_AICPU_OP_DEF_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu_def.cpp)
13+file(GLOB IDENTITY_AICPU_JSON_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.json)
14+get_filename_component(PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
15+get_filename_component(OP_NAME ${PARENT_DIR} NAME)
16+set(_AICPU_BUILTIN_PKG_ALLOWED OFF)
17+if(AICPU_BUILTIN_PACKAGE_FORCE_ALL)
18+ set(_AICPU_BUILTIN_PKG_ALLOWED ON)
19+else()
20+ foreach(_entry ${AICPU_BUILTIN_PACKAGE_MANIFEST})
21+ if(_entry STREQUAL "${OP_NAME}=ON")
22+ set(_AICPU_BUILTIN_PKG_ALLOWED ON)
23+ break()
24+ endif()
25+ endforeach()
26+endif()
27+if(IDENTITY_AICPU_OP_DEF_SRCS AND (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED))
28+ set_property(GLOBAL APPEND PROPERTY AICPU_OPDEF_FILES ${IDENTITY_AICPU_OP_DEF_SRCS})
29+endif()
30+if(IDENTITY_AICPU_JSON_FILES AND (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED))
31+ set_property(GLOBAL APPEND PROPERTY AICPU_JSON_FILES ${IDENTITY_AICPU_JSON_FILES})
32+endif()
33+if(IDENTITY_AICPU_SRCS AND NOT DISABLE_AICPU)
13 if(NOT BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG)34 if(NOT BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG)
14 add_aicpu_kernel_modules()35 add_aicpu_kernel_modules()
15 target_sources(${OPHOST_NAME}_aicpu_obj PRIVATE ${IDENTITY_AICPU_SRCS})36 target_sources(${OPHOST_NAME}_aicpu_obj PRIVATE ${IDENTITY_AICPU_SRCS})
16- else()37+ elseif(ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED)
17- get_filename_component(PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)38+ add_aicpu_cust_kernel_modules(${OP_NAME} "${IDENTITY_AICPU_SRCS}")
18- get_filename_component(OP_NAME ${PARENT_DIR} NAME)
19- file(GLOB IDENTITY_AICPU_JSON_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.json)
20- add_aicpu_cust_kernel_modules(${OP_NAME} ${IDENTITY_AICPU_SRCS} ${IDENTITY_AICPU_JSON_FILES})
21 endif()39 endif()
22-endif()40+endif()
@@ -2,7 +2,7 @@
2# Copyright (c) 2026 Huawei Technologies Co., Ltd.2# Copyright (c) 2026 Huawei Technologies Co., Ltd.
3# This program is free software, you can redistribute it and/or modify it under the terms and conditions of3# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4# CANN Open Software License Agreement Version 2.0 (the "License").4# CANN Open Software License Agreement Version 2.0 (the "License").
5-# Please refer to the License for details. You may not use this file in compliance with the License.5+# Please refer to the License for details. You may not use this file except in compliance with the License.
6# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,6# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.7# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8# See LICENSE in the root of the software repository for the full text of the License.8# See LICENSE in the root of the software repository for the full text of the License.
@@ -10,16 +10,27 @@
10 10 
11file(GLOB LIN_SPACE_AICPU_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu.cpp)11file(GLOB LIN_SPACE_AICPU_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu.cpp)
12file(GLOB LIN_SPACE_AICPU_OP_DEF_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu_def.cpp)12file(GLOB LIN_SPACE_AICPU_OP_DEF_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu_def.cpp)
13-if(LIN_SPACE_AICPU_OP_DEF_SRCS)13+get_filename_component(PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
14+get_filename_component(OP_NAME ${PARENT_DIR} NAME)
15+set(_AICPU_BUILTIN_PKG_ALLOWED OFF)
16+if(AICPU_BUILTIN_PACKAGE_FORCE_ALL)
17+ set(_AICPU_BUILTIN_PKG_ALLOWED ON)
18+else()
19+ foreach(_entry ${AICPU_BUILTIN_PACKAGE_MANIFEST})
20+ if(_entry STREQUAL "${OP_NAME}=ON")
21+ set(_AICPU_BUILTIN_PKG_ALLOWED ON)
22+ break()
23+ endif()
24+ endforeach()
25+endif()
26+if(LIN_SPACE_AICPU_OP_DEF_SRCS AND (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED))
14 set_property(GLOBAL APPEND PROPERTY AICPU_OPDEF_FILES ${LIN_SPACE_AICPU_OP_DEF_SRCS})27 set_property(GLOBAL APPEND PROPERTY AICPU_OPDEF_FILES ${LIN_SPACE_AICPU_OP_DEF_SRCS})
15endif()28endif()
16-if(LIN_SPACE_AICPU_SRCS)29+if(LIN_SPACE_AICPU_SRCS AND NOT DISABLE_AICPU)
17 if(NOT BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG)30 if(NOT BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG)
18 add_aicpu_kernel_modules()31 add_aicpu_kernel_modules()
19 target_sources(${OPHOST_NAME}_aicpu_obj PRIVATE ${LIN_SPACE_AICPU_SRCS})32 target_sources(${OPHOST_NAME}_aicpu_obj PRIVATE ${LIN_SPACE_AICPU_SRCS})
20- else()33+ elseif(ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED)
21- get_filename_component(PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
22- get_filename_component(OP_NAME ${PARENT_DIR} NAME)
23 add_aicpu_cust_kernel_modules(${OP_NAME} "${LIN_SPACE_AICPU_SRCS}")34 add_aicpu_cust_kernel_modules(${OP_NAME} "${LIN_SPACE_AICPU_SRCS}")
24 endif()35 endif()
25-endif()36+endif()
@@ -10,16 +10,27 @@
10 10 
11file(GLOB TAN_AICPU_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu.cpp)11file(GLOB TAN_AICPU_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu.cpp)
12file(GLOB TAN_AICPU_OP_DEF_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu_def.cpp)12file(GLOB TAN_AICPU_OP_DEF_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu_def.cpp)
13-if(TAN_AICPU_OP_DEF_SRCS)13+get_filename_component(PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
14+get_filename_component(OP_NAME ${PARENT_DIR} NAME)
15+set(_AICPU_BUILTIN_PKG_ALLOWED OFF)
16+if(AICPU_BUILTIN_PACKAGE_FORCE_ALL)
17+ set(_AICPU_BUILTIN_PKG_ALLOWED ON)
18+else()
19+ foreach(_entry ${AICPU_BUILTIN_PACKAGE_MANIFEST})
20+ if(_entry STREQUAL "${OP_NAME}=ON")
21+ set(_AICPU_BUILTIN_PKG_ALLOWED ON)
22+ break()
23+ endif()
24+ endforeach()
25+endif()
26+if(TAN_AICPU_OP_DEF_SRCS AND (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED))
14 set_property(GLOBAL APPEND PROPERTY AICPU_OPDEF_FILES ${TAN_AICPU_OP_DEF_SRCS})27 set_property(GLOBAL APPEND PROPERTY AICPU_OPDEF_FILES ${TAN_AICPU_OP_DEF_SRCS})
15endif()28endif()
16-if(TAN_AICPU_SRCS)29+if(TAN_AICPU_SRCS AND NOT DISABLE_AICPU)
17 if(NOT BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG)30 if(NOT BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG)
18 add_aicpu_kernel_modules()31 add_aicpu_kernel_modules()
19 target_sources(${OPHOST_NAME}_aicpu_obj PRIVATE ${TAN_AICPU_SRCS})32 target_sources(${OPHOST_NAME}_aicpu_obj PRIVATE ${TAN_AICPU_SRCS})
20- else()33+ elseif(ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED)
21- get_filename_component(PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
22- get_filename_component(OP_NAME ${PARENT_DIR} NAME)
23 add_aicpu_cust_kernel_modules(${OP_NAME} "${TAN_AICPU_SRCS}")34 add_aicpu_cust_kernel_modules(${OP_NAME} "${TAN_AICPU_SRCS}")
24 endif()35 endif()
25endif()36endif()
@@ -10,16 +10,27 @@
10 10 
11file(GLOB TOPK_AICPU_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu.cpp)11file(GLOB TOPK_AICPU_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu.cpp)
12file(GLOB TOPK_AICPU_OP_DEF_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu_def.cpp)12file(GLOB TOPK_AICPU_OP_DEF_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/*_aicpu_def.cpp)
13-if(TOPK_AICPU_OP_DEF_SRCS)13+get_filename_component(PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
14+get_filename_component(OP_NAME ${PARENT_DIR} NAME)
15+set(_AICPU_BUILTIN_PKG_ALLOWED OFF)
16+if(AICPU_BUILTIN_PACKAGE_FORCE_ALL)
17+ set(_AICPU_BUILTIN_PKG_ALLOWED ON)
18+else()
19+ foreach(_entry ${AICPU_BUILTIN_PACKAGE_MANIFEST})
20+ if(_entry STREQUAL "${OP_NAME}=ON")
21+ set(_AICPU_BUILTIN_PKG_ALLOWED ON)
22+ break()
23+ endif()
24+ endforeach()
25+endif()
26+if(TOPK_AICPU_OP_DEF_SRCS AND (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED))
14 set_property(GLOBAL APPEND PROPERTY AICPU_OPDEF_FILES ${TOPK_AICPU_OP_DEF_SRCS})27 set_property(GLOBAL APPEND PROPERTY AICPU_OPDEF_FILES ${TOPK_AICPU_OP_DEF_SRCS})
15endif()28endif()
16if(TOPK_AICPU_SRCS AND NOT DISABLE_AICPU)29if(TOPK_AICPU_SRCS AND NOT DISABLE_AICPU)
17 if(NOT BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG)30 if(NOT BUILD_WITH_INSTALLED_DEPENDENCY_CANN_PKG)
18 add_aicpu_kernel_modules()31 add_aicpu_kernel_modules()
19 target_sources(${OPHOST_NAME}_aicpu_obj PRIVATE ${TOPK_AICPU_SRCS})32 target_sources(${OPHOST_NAME}_aicpu_obj PRIVATE ${TOPK_AICPU_SRCS})
20- else()33+ elseif(ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED)
21- get_filename_component(PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
22- get_filename_component(OP_NAME ${PARENT_DIR} NAME)
23 add_aicpu_cust_kernel_modules(${OP_NAME} "${TOPK_AICPU_SRCS}")34 add_aicpu_cust_kernel_modules(${OP_NAME} "${TOPK_AICPU_SRCS}")
24 endif()35 endif()
25endif()36endif()