选择分支名或 Tag 名,也可以输入一个 commit 的 ID,点击对比按钮。
| ... | @@ -0,0 +1,96 @@ |
| 2 | +Language: Cpp |
| 3 | +AccessModifierOffset: -4 |
| 4 | +AlignConsecutiveAssignments: false |
| 5 | +AlignConsecutiveDeclarations: false |
| 6 | +AlignEscapedNewlines: DontAlign |
| 7 | +AlignOperands: true |
| 8 | +AlignTrailingComments: true |
| 9 | +AllowAllArgumentsOnNextLine: true |
| 10 | +AllowShortLambdasOnASingleLine: Empty |
| 11 | +AllowAllParametersOfDeclarationOnNextLine: false |
| 12 | +AllowShortBlocksOnASingleLine: false |
| 13 | +AllowShortCaseLabelsOnASingleLine: false |
| 14 | +AllowShortFunctionsOnASingleLine: false |
| 15 | +AllowShortIfStatementsOnASingleLine: false |
| 16 | +AllowShortLoopsOnASingleLine: false |
| 17 | +AlwaysBreakAfterDefinitionReturnType: None |
| 18 | +AlwaysBreakBeforeMultilineStrings: false |
| 19 | +AlwaysBreakTemplateDeclarations: MultiLine |
| 20 | +BinPackArguments: true |
| 21 | +BinPackParameters: true |
| 22 | +AlignAfterOpenBracket: DontAlign |
| 23 | + |
| 24 | +BraceWrapping: |
| 25 | + AfterCaseLabel: false |
| 26 | + AfterClass: false |
| 27 | + AfterControlStatement: Never |
| 28 | + AfterEnum: false |
| 29 | + AfterFunction: true |
| 30 | + AfterNamespace: false |
| 31 | + AfterStruct: false |
| 32 | + AfterUnion: false |
| 33 | + AfterExternBlock: false |
| 34 | + BeforeCatch: false |
| 35 | + BeforeElse: false |
| 36 | + IndentBraces: false |
| 37 | + SplitEmptyFunction: true |
| 38 | + SplitEmptyRecord: true |
| 39 | + SplitEmptyNamespace: true |
| 40 | + |
| 41 | +BreakBeforeBinaryOperators: All |
| 42 | +BreakBeforeBraces: Custom |
| 43 | +BreakBeforeTernaryOperators: true |
| 44 | +BreakConstructorInitializersBeforeComma: false |
| 45 | +BreakInheritanceList: AfterColon |
| 46 | +ColumnLimit: 120 |
| 47 | +CommentPragmas: '^ IWYU pragma:' |
| 48 | +PackConstructorInitializers: CurrentLine |
| 49 | +ConstructorInitializerIndentWidth: 4 |
| 50 | +ContinuationIndentWidth: 4 |
| 51 | +Cpp11BracedListStyle: true |
| 52 | +DerivePointerAlignment: false |
| 53 | +DisableFormat: false |
| 54 | +ExperimentalAutoDetectBinPacking: false |
| 55 | +ForEachMacros: [ foreach ] |
| 56 | + |
| 57 | +IncludeCategories: |
| 58 | + - Regex: '^<' |
| 59 | + Priority: 3 |
| 60 | + - Regex: '^"hccl' |
| 61 | + Priority: 2 |
| 62 | + - Regex: '.*' |
| 63 | + Priority: 1 |
| 64 | + |
| 65 | +IndentCaseLabels: true |
| 66 | +IndentWidth: 4 |
| 67 | +IndentWrappedFunctionNames: false |
| 68 | +KeepEmptyLinesAtTheStartOfBlocks: false |
| 69 | +MacroBlockBegin: '' |
| 70 | +MacroBlockEnd: '' |
| 71 | +MaxEmptyLinesToKeep: 1 |
| 72 | +NamespaceIndentation: Inner |
| 73 | + |
| 74 | +PenaltyBreakBeforeFirstCallParameter: 19 |
| 75 | +PenaltyBreakComment: 300 |
| 76 | +PenaltyBreakFirstLessLess: 120 |
| 77 | +PenaltyBreakString: 1000 |
| 78 | +PenaltyExcessCharacter: 1000000 |
| 79 | +PenaltyReturnTypeOnItsOwnLine: 60 |
| 80 | + |
| 81 | +PointerAlignment: Right |
| 82 | +ReflowComments: true |
| 83 | +SortIncludes: false |
| 84 | +SpaceAfterCStyleCast: false |
| 85 | +SpaceBeforeAssignmentOperators: true |
| 86 | +SpaceBeforeParens: ControlStatements |
| 87 | +SpaceInEmptyParentheses: false |
| 88 | +SpacesBeforeTrailingComments: 1 |
| 89 | +SpacesInAngles: false |
| 90 | +SpacesInContainerLiterals: true |
| 91 | +SpacesInCStyleCastParentheses: false |
| 92 | +SpacesInParentheses: false |
| 93 | +SpacesInSquareBrackets: false |
| 94 | +Standard: Latest |
| 95 | +TabWidth: 4 |
| 96 | +UseTab: Never |
| 97 | +UseCRLF: false |
| 98 | \ No newline at end of file |
| 99 |
| ... | @@ -0,0 +1,77 @@ |
| 2 | +name: "Help Wanted|任务认领" |
| 3 | +description: 适用于社区开发者认领的功能开发、Bug修复或性能优化任务 |
| 4 | +title: "[Help Wanted|任务认领]: " |
| 5 | +labels: ["help wanted"] |
| 6 | +body: |
| 7 | + - type: markdown |
| 8 | + attributes: |
| 9 | + value: | |
| 10 | + 感谢您关注本项目! |
| 11 | + 在开始认领任务前,请确保您已经阅读了本项目的[贡献指南](../blob/master/CONTRIBUTING.md)。 |
| 12 | + |
| 13 | + - type: input |
| 14 | + id: task_title |
| 15 | + attributes: |
| 16 | + label: 任务标题 |
| 17 | + description: 用一句话概括这个任务 |
| 18 | + placeholder: 例如:实现建链优化功能 |
| 19 | + validations: |
| 20 | + required: true |
| 21 | + |
| 22 | + - type: textarea |
| 23 | + id: description |
| 24 | + attributes: |
| 25 | + label: 任务背景 |
| 26 | + description: 请说明任务的具体内容、背景和目的 |
| 27 | + placeholder: 描述需要完成的工作,以及为什么它很重要... |
| 28 | + validations: |
| 29 | + required: true |
| 30 | + |
| 31 | + - type: textarea |
| 32 | + id: goal |
| 33 | + attributes: |
| 34 | + label: 任务目标 |
| 35 | + description: 请列出要实现的具体功能点与目标 |
| 36 | + placeholder: "1. 增加XXX功能;2. 实现XXX特性;3. 单元测试" |
| 37 | + validations: |
| 38 | + required: true |
| 39 | + |
| 40 | + - type: textarea |
| 41 | + id: acceptance_criteria |
| 42 | + attributes: |
| 43 | + label: 验收标准 |
| 44 | + description: 任务完成需要满足哪些条件?(建议使用清单格式) |
| 45 | + placeholder: | |
| 46 | + - [ ] 条件 1 |
| 47 | + - [ ] 条件 2 |
| 48 | + - [ ] 条件 3 |
| 49 | + value: "- [ ] \n- [ ] \n- [ ] " |
| 50 | + |
| 51 | + - type: textarea |
| 52 | + id: resources |
| 53 | + attributes: |
| 54 | + label: 参考资料 |
| 55 | + description: 相关的文档、代码位置、设计稿或外部链接 |
| 56 | + placeholder: | |
| 57 | + - 相关代码文件:`src/core/xxx.cc` |
| 58 | + - 参考文档:[项目贡献指南](...) |
| 59 | + |
| 60 | + - type: dropdown |
| 61 | + id: difficulty |
| 62 | + attributes: |
| 63 | + label: 难度级别 |
| 64 | + description: 适合什么样的贡献者? |
| 65 | + options: |
| 66 | + - 新手友好 |
| 67 | + - 中等难度 |
| 68 | + - 高级挑战 |
| 69 | + default: 0 |
| 70 | + validations: |
| 71 | + required: true |
| 72 | + |
| 73 | + - type: input |
| 74 | + id: mentor |
| 75 | + attributes: |
| 76 | + label: 指导者(可选) |
| 77 | + description: 如果指定了指导者,可以在此填写其 GitCode 用户名 |
| 78 | + placeholder: "@username" |
| 79 |
| ... | @@ -1,22 +1,47 @@ |
| 2 | ## 描述 |
| 3 | <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> |
| 4 | |
| 5 | +## 变更类型 |
| 6 | +请选择本次引入的变更类型: |
| 7 | +<!-- [x] 表示选中 --> |
| 8 | +- [ ] 🐛 Bug修复 |
| 9 | +- [ ] ✨ 新特性 |
| 10 | +- [ ] 🚀 性能优化 |
| 11 | +- [ ] 📝 文档更新 |
| 12 | +- [ ] 📋 其他,请描述: |
| 13 | + |
| 14 | ## 关联的Issue |
| 15 | -<!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> |
| 16 | +<!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> |
| 17 | <!-- 如果这个PR不涉及Issue,可填写"NA"。--> |
| 18 | |
| 19 | ## 测试 |
| 20 | <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> |
| 21 | +已完成的测试用例和场景: |
| 22 | +1. |
| 23 | +2. |
| 24 | + |
| 25 | +补充的UT用例: |
| 26 | |
| 27 | ## 文档更新 |
| 28 | <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> |
| 29 | |
| 30 | -## 类型标签 |
| 31 | +## 合入检查 |
| 32 | +<!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> |
| 33 | <!-- [x] 表示选中 --> |
| 34 | -- [ ] Bug修复 |
| 35 | -- [ ] 新特性 |
| 36 | -- [ ] 性能优化 |
| 37 | -- [ ] 文档更新 |
| 38 | -- [ ] 其他,请描述: |
| 39 | - |
| 40 | - |
| 41 | +- [ ] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 |
| 42 | +- [ ] 🔍 邀请 committer评论`/lgtm`前的必要检查 |
| 43 | + - [ ] 🏷️ 标题中使用了合适的类型标签(如:`[feat]`, `[fix]`) |
| 44 | + - [ ] 📄 代码修改内容已简要描述,相关文档已更新 |
| 45 | + - [ ] 📝 代码注释已更新,代码遵循项目整体代码风格 |
| 46 | + - [ ] 🧪 代码UT测试已更新,覆盖率已达标 |
| 47 | + - [ ] 🔬 验证方法已更新到"测试"部分 |
| 48 | + - [ ] 🛠️ 代码已通过静态分析工具检查,无错误 |
| 49 | + - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 |
| 50 | + - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 |
| 51 | +- [ ] 🚀 预约 前冒烟 用例前的必要检查 |
| 52 | + - [ ] ✔️ 代码已有committer的`/lgtm` 和 模块committer的`/lgtm`评论 |
| 53 | + - [ ] 🔧 代码已通过compile,编译无错误,无告警 |
| 54 | + - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 |
| 55 | +- [ ] 🎯 预约 approver评论`/approve`,正式合入前的必要检查 |
| 56 | + - [ ] 📊 前冒烟 用例已全量通过 |
| 57 | + - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 |
| 58 | \ No newline at end of file |
| 59 |
| ... | @@ -0,0 +1,18 @@ |
| 2 | +repos: |
| 3 | + - repo: https://github.com/pre-commit/mirrors-clang-format |
| 4 | + rev: v16.0.0 |
| 5 | + hooks: |
| 6 | + - id: clang-format |
| 7 | + types_or: [c++, c] |
| 8 | + |
| 9 | + # OAT compliance check (Open Source Audit Tool) |
| 10 | + - repo: local |
| 11 | + hooks: |
| 12 | + - id: oat-check |
| 13 | + name: OAT Compliance Check |
| 14 | + entry: bash scripts/oat_check.sh |
| 15 | + language: system |
| 16 | + pass_filenames: true |
| 17 | + types: [file] |
| 18 | + stages: [commit] |
| 19 | + verbose: true |
| 20 |
| ... | @@ -13,12 +13,6 @@ message(STATUS "DEVICE_MODE=${DEVICE_MODE}") |
| 2 | message(STATUS "BUILD_OPEN_PROJECT=${BUILD_OPEN_PROJECT}") |
| 3 | message(STATUS "AARCH_MODE=${AARCH_MODE}") |
| 4 | |
| 5 | -find_program(CCACHE_PROGRAM ccache) |
| 6 | -if(CCACHE_PROGRAM) |
| 7 | - set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) |
| 8 | - set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) |
| 9 | -endif() |
| 10 | - |
| 11 | if((BUILD_OPEN_PROJECT AND DEVICE_MODE) OR AARCH_MODE) |
| 12 | # need to switch |
| 13 | set(CMAKE_SYSTEM_NAME Linux) |
| ... | @@ -44,18 +38,20 @@ execute_process( |
| 15 | OUTPUT_STRIP_TRAILING_WHITESPACE |
| 16 | ) |
| 17 | message(STATUS "当前系统架构: ${SYSTEM_ARCH}") |
| 18 | + |
| 19 | +# 引入CANN/cmake库 |
| 20 | +include(cmake/fetch_cann_cmake.cmake) |
| 21 | + |
| 22 | project(hcomm) |
| 23 | |
| 24 | +# 引入CANN/cmake库,初始化 |
| 25 | +init_cann_project() |
| 26 | + |
| 27 | +set(CMAKE_CXX_STANDARD 14) |
| 28 | +set(CMAKE_CXX_STANDARD_REQUIRED ON) |
| 29 | set(CMAKE_C_FLAGS_RELEASE "") |
| 30 | set(CMAKE_CXX_FLAGS_RELEASE "") |
| 31 | |
| 32 | -set(CMAKE_CXX_COMPILE_OBJECT |
| 33 | - "<CMAKE_CXX_COMPILER> <DEFINES> -D__FILE__='\"$(notdir $(abspath <SOURCE>))\"' -Wno-builtin-macro-redefined <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>" |
| 34 | -) |
| 35 | -set(CMAKE_C_COMPILE_OBJECT |
| 36 | - "<CMAKE_C_COMPILER> <DEFINES> -D__FILE__='\"$(notdir $(abspath <SOURCE>))\"' -Wno-builtin-macro-redefined <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>" |
| 37 | -) |
| 38 | - |
| 39 | # 获取 CPU 核心数 |
| 40 | if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") |
| 41 | execute_process( |
| ... | @@ -82,6 +78,7 @@ set(CMAKE_JOB_POOL_COMPILE "${JOBS}") |
| 43 | set(CMAKE_JOB_POOL_LINK "${JOBS}") |
| 44 | |
| 45 | if(ENABLE_TEST) |
| 46 | + enable_testing() |
| 47 | include(cmake/config.cmake) |
| 48 | include(cmake/function.cmake) |
| 49 | include(cmake/intf_pub_gccnative.cmake) |
| ... | @@ -103,7 +100,7 @@ elseif(BUILD_OPEN_PROJECT) |
| 51 | include(cmake/func.cmake) |
| 52 | include(version.cmake) |
| 53 | if(ENABLE_OPEN_SRC) |
| 54 | - check_pkg_build_deps("hcomm") |
| 55 | + check_pkg_build_deps("hcomm") |
| 56 | endif() |
| 57 | add_version_info_targets() |
| 58 | pack_built_in() |
| ... | @@ -116,9 +113,11 @@ elseif(BUILD_OPEN_PROJECT) |
| 60 | src/pub_inc/hccn_rping.h |
| 61 | include/hccl/hccl_rank_graph.h |
| 62 | include/hccl/hccl_res.h |
| 63 | - include/hccl/hcomm_primitives.h |
| 64 | - include/hcomm_res.h |
| 65 | - include/hcomm_res_defs.h |
| 66 | + include/hccl/hccl_sym_win.h |
| 67 | + ) |
| 68 | + |
| 69 | + set(HCOMM_HEAD |
| 70 | + include/hcomm_primitives.h |
| 71 | ) |
| 72 | |
| 73 | set(HCCL_JSON |
| ... | @@ -136,11 +135,10 @@ elseif(BUILD_OPEN_PROJECT) |
| 75 | OUTPUT_TARGET "generate_device_hccp_package" |
| 76 | OUTPUT "cann-hcomm-compat.tar.gz" |
| 77 | TARGETS hccp_service.bin |
| 78 | - FILES ${HCCP_TAR_DIR}/librs.so ${HCCP_TAR_DIR}/libra_adp.so ${HCCP_TAR_DIR}/libtls_adp.so ${HCCP_TAR_DIR}/libascend_kms.so |
| 79 | + FILES ${HCCP_TAR_DIR}/librs.so ${HCCP_TAR_DIR}/libra_adp.so ${HCCP_TAR_DIR}/libtls_adp.so ${HCCP_TAR_DIR}/libascend_kms.so ${HCCP_TAR_DIR}/libnet_co.so |
| 80 | MANIFEST "hccp_compat_bin_hash.cfg" |
| 81 | ) |
| 82 | add_dependencies(generate_device_hccp_package hccp_service.bin) |
| 83 | - |
| 84 | sign_file( |
| 85 | INPUT "cann-hcomm-compat.tar.gz" |
| 86 | CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/scripts/sign/hcomm_check_cfg.xml" |
| ... | @@ -149,13 +147,23 @@ elseif(BUILD_OPEN_PROJECT) |
| 88 | ) |
| 89 | add_dependencies(sign_cann_hcomm_compat generate_device_hccp_package) |
| 90 | |
| 91 | - add_custom_target(generate_device_hccd_package |
| 92 | - COMMAND cd ${HCCD_TAR_DIR} && ls && tar czf ../cann-hccd-compat.tar.gz lib64 |
| 93 | - DEPENDS hccd |
| 94 | - COMMENT "Creating cann-hccd-compat.tar.gz" |
| 95 | + set(HCCD_TAR_LIBS |
| 96 | + ${HCCD_TAR_DIR}/lib64/libascend_kms.so |
| 97 | + ${HCCD_TAR_DIR}/lib64/libhccd.so |
| 98 | + ${HCCD_TAR_DIR}/lib64/libra_hdc.so |
| 99 | + ${HCCD_TAR_DIR}/lib64/libra_peer.so |
| 100 | + ${HCCD_TAR_DIR}/lib64/libra.so |
| 101 | + ${HCCD_TAR_DIR}/lib64/librs.so |
| 102 | + ${HCCD_TAR_DIR}/lib64/libtls_adp.so |
| 103 | + ) |
| 104 | + pack_targets_and_files( |
| 105 | + OUTPUT_TARGET "generate_device_hccd_package" |
| 106 | + OUTPUT "cann-hccd-compat.tar.gz" |
| 107 | + FILES ${HCCD_TAR_LIBS} |
| 108 | + MANIFEST "bin_hash.cfg" |
| 109 | + TAR_ROOT_DIR "lib64" |
| 110 | ) |
| 111 | add_dependencies(generate_device_hccd_package hccd) |
| 112 | - |
| 113 | sign_file( |
| 114 | INPUT "cann-hccd-compat.tar.gz" |
| 115 | CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/scripts/sign/hcomm_check_cfg.xml" |
| ... | @@ -165,10 +173,16 @@ elseif(BUILD_OPEN_PROJECT) |
| 117 | add_dependencies(sign_cann_hccd_compat generate_device_hccd_package) |
| 118 | |
| 119 | if(KERNEL_MODE) |
| 120 | - add_custom_target(generate_device_aicpu_package |
| 121 | - COMMAND cd ${CCL_KERNEL_TAR_DIR} && ls && tar czf ../aicpu_hcomm.tar.gz aicpu_kernels_device |
| 122 | - DEPENDS ccl_kernel |
| 123 | - COMMENT "Creating aicpu_hcomm.tar.gz" |
| 124 | + set(CCL_KERNEL_TAR_LIBS |
| 125 | + ${CCL_KERNEL_TAR_DIR}/aicpu_kernels_device/libccl_kernel_plf.so |
| 126 | + ${CCL_KERNEL_TAR_DIR}/aicpu_kernels_device/libccl_kernel.so |
| 127 | + ) |
| 128 | + pack_targets_and_files( |
| 129 | + OUTPUT_TARGET "generate_device_aicpu_package" |
| 130 | + OUTPUT "aicpu_hcomm.tar.gz" |
| 131 | + FILES ${CCL_KERNEL_TAR_LIBS} |
| 132 | + MANIFEST "bin_hash.cfg" |
| 133 | + TAR_ROOT_DIR "aicpu_kernels_device" |
| 134 | ) |
| 135 | add_dependencies(generate_device_aicpu_package ccl_kernel) |
| 136 | sign_file( |
| ... | @@ -195,20 +209,32 @@ elseif(BUILD_OPEN_PROJECT) |
| 138 | ) |
| 139 | install(FILES ${BUILD_DEVICE_DIR}/signatures/cann-hcomm-compat.tar.gz |
| 140 | DESTINATION ${INSTALL_DEVICE_TAR_DIR} OPTIONAL |
| 141 | + PERMISSIONS OWNER_READ GROUP_READ |
| 142 | + OPTIONAL |
| 143 | ) |
| 144 | install(FILES ${BUILD_DEVICE_DIR}/signatures/aicpu_hcomm.tar.gz |
| 145 | - DESTINATION ${INSTALL_DEVICE_TAR_DIR} OPTIONAL |
| 146 | + DESTINATION ${INSTALL_CCL_KERNEL_JSON_DIR}/kernel OPTIONAL |
| 147 | ) |
| 148 | install(FILES ${BUILD_HCCD_DIR}/signatures/cann-hccd-compat.tar.gz |
| 149 | DESTINATION ${INSTALL_DEVICE_TAR_DIR} OPTIONAL |
| 150 | + PERMISSIONS OWNER_READ GROUP_READ |
| 151 | + OPTIONAL |
| 152 | ) |
| 153 | install(FILES ${BUILD_DEVICE_DIR}/src/framework/libaicpu_custom.so |
| 154 | - DESTINATION ${INSTALL_CCL_KERNEL_JSON_DIR} OPTIONAL |
| 155 | + DESTINATION ${INSTALL_CCL_KERNEL_JSON_DIR}/kernel OPTIONAL |
| 156 | ) |
| 157 | install(FILES ${BUILD_DEVICE_DIR}/src/framework/libaicpu_custom.json |
| 158 | - DESTINATION ${INSTALL_CCL_KERNEL_JSON_DIR} OPTIONAL |
| 159 | + DESTINATION ${INSTALL_CCL_KERNEL_JSON_DIR}/kernel OPTIONAL |
| 160 | + ) |
| 161 | + |
| 162 | + add_custom_target(install_ccl_kernel DEPENDS |
| 163 | + ${BUILD_DEVICE_DIR}/src/framework/libccl_kernel.so |
| 164 | + ) |
| 165 | + install(FILES ${BUILD_DEVICE_DIR}/src/framework/libccl_kernel.so |
| 166 | + DESTINATION ${CMAKE_SYSTEM_PROCESSOR}-linux/devlib/device OPTIONAL |
| 167 | ) |
| 168 | add_dependencies(install_tar hcomm) |
| 169 | + add_dependencies(install_ccl_kernel hcomm) |
| 170 | endif() |
| 171 | |
| 172 | install(FILES |
| ... | @@ -216,12 +242,29 @@ elseif(BUILD_OPEN_PROJECT) |
| 174 | ${HCCL_JSON} |
| 175 | DESTINATION ${INSTALL_INCLUDE_DIR}/hccl/ OPTIONAL |
| 176 | ) |
| 177 | + if(NOT BUILD_OPEN_PROJECT) |
| 178 | + install(FILES |
| 179 | + ${HCOMM_HEAD} |
| 180 | + DESTINATION ${INSTALL_INCLUDE_DIR}/ OPTIONAL |
| 181 | + ) |
| 182 | + endif() |
| 183 | + install(FILES |
| 184 | + include/hcomm_primitives.h |
| 185 | + DESTINATION ${INSTALL_INCLUDE_DIR}/hcomm/ OPTIONAL |
| 186 | + ) |
| 187 | + install(FILES |
| 188 | + include/hcomm_res.h |
| 189 | + include/hcomm_res_defs.h |
| 190 | + DESTINATION ${INSTALL_INCLUDE_DIR}/hcomm/ OPTIONAL |
| 191 | + ) |
| 192 | |
| 193 | set(HCCL_PKG_HEAD |
| 194 | pkg_inc/hccl/base.h |
| 195 | pkg_inc/hccl/hccl_ex.h |
| 196 | pkg_inc/hccl/hccl_one_sided_services.h |
| 197 | + pkg_inc/hccl/hccl_res_expt.h |
| 198 | pkg_inc/hccl/hcom.h |
| 199 | + pkg_inc/hccl/hccl_diag.h |
| 200 | pkg_inc/hccl/hcomm_diag.h |
| 201 | pkg_inc/hccl/dtype_common.h |
| 202 | pkg_inc/hccl/workflow.h |
| ... | @@ -271,4 +314,11 @@ elseif(BUILD_OPEN_PROJECT) |
| 204 | ${HCCL_PKG_CCU_HEAD} |
| 205 | DESTINATION ${INSTALL_PKG_INCLUDE_DIR}/hcomm/ccu/ OPTIONAL |
| 206 | ) |
| 207 | + set(HCOMM_PKG_HEAD |
| 208 | + pkg_inc/hcomm/hcomm_primitives_expt.h |
| 209 | + ) |
| 210 | + install(FILES |
| 211 | + ${HCOMM_PKG_HEAD} |
| 212 | + DESTINATION ${INSTALL_PKG_INCLUDE_DIR}/hcomm/ OPTIONAL |
| 213 | + ) |
| 214 | endif() |
| 215 |
| ... | @@ -1,22 +1,124 @@ |
| 2 | # 贡献指南 |
| 3 | |
| 4 | -本项目欢迎广大开发者体验并参与贡献,在参与社区贡献之前。请参见[cann-community](https://gitcode.com/cann/community)了解行为准则,进行 CLA 协议签署,了解源码仓的贡献流程。 |
| 5 | +感谢您对HCCL的关注,本项目欢迎广大开发者体验并参与贡献。在参与社区贡献之前,请参见[cann-community](https://gitcode.com/cann/community)了解行为准则,进行 CLA 协议签署,了解源码仓的贡献流程。 |
| 6 | |
| 7 | -开发者准备本地代码与提交 PR 时需要重点关注如下几点: |
| 8 | +## 期望的贡献 |
| 9 | |
| 10 | -1. 提交 PR 时,请按照 PR 模板仔细填写本次 PR 的业务背景、目的、方案等信息。 |
| 11 | -2. 若您的修改不是简单的 bug 修复,而是涉及到新增特性、新增接口、新增配置参数或者修改代码流程等,请务必先通过 Issue 进行方案讨论,以避免您的代码被拒绝合入。若您不确定本次修改是否可被归为“简单的 bug 修复”,亦可通过提交 Issue 进行方案讨论。 |
| 12 | +- 问题修复:修复自己发现的或在Issue列表中的Bug,比如代码中的逻辑错误、内存泄漏或崩溃等问题; |
| 13 | +- 社区任务:领取HCCL社区公布的任务; |
| 14 | +- 性能优化:针对特定算子或特定架构的性能优化; |
| 15 | +- 新功能支持:增加平台功能、新算子或新业务场景的支持; |
| 16 | +- 文档优化:改进文档、注释或使用用例。 |
| 17 | |
| 18 | -## 贡献场景 |
| 19 | +## 预备知识 |
| 20 | |
| 21 | -开发者贡献场景主要包括: |
| 22 | +### 编码规范 |
| 23 | |
| 24 | -- 反馈 BUG |
| 25 | -- 建议特性 |
| 26 | -- 改进文档 |
| 27 | -- 修复问题 |
| 28 | -- 新增样例 |
| 29 | +请遵从[CANN 社区编码规范](https://gitcode.com/cann/community/tree/master/contributor/coding-standards)。 |
| 30 | |
| 31 | -## 编码规范 |
| 32 | +### PR规范 |
| 33 | |
| 34 | -若您需要贡献代码,请遵从[CANN 社区编码规范](https://gitcode.com/cann/community/tree/master/contributor/coding-standards)。 |
| 35 | +1. 提交 PR 时,请按照 PR 模板仔细填写本次 PR 的业务背景、目的、方案等信息; |
| 36 | +2. **所有PR都必须关联Issue**,请在PR描述中引用对应的Issue编号; |
| 37 | +3. 使用 Git 提交代码前,请参考 [pre-commit工具使用指导](./docs/dev_guide/pre-commit-guide.md),以保持代码风格一致且符合合规规范。 |
| 38 | +4. 若您的修改不是简单的 bug 修复,而是涉及到新增特性、新增接口、新增配置参数或者修改代码流程等,请务必先通过 Issue 进行方案讨论,以避免您的代码被拒绝合入。若您不确定本次修改是否可被归为"简单的 bug 修复",亦可通过提交 Issue 进行方案讨论。 |
| 39 | + |
| 40 | +## 贡献流程 |
| 41 | + |
| 42 | +贡献可以分为两类: |
| 43 | + |
| 44 | +- 简单问题处理:Bug修复、简单代码修改、文档修改等; |
| 45 | +- 新功能或新特性:增加新功能、新特性、新接口,或者支持新业务场景的贡献。 |
| 46 | + |
| 47 | +**整体流程** |
| 48 | + |
| 49 | +```mermaid |
| 50 | +flowchart TD |
| 51 | + A1[开始贡献] --> A2{类型?} |
| 52 | + A2 -->|简单问题| A3[查询Issue列表] |
| 53 | + A2 -->|新功能/特性| A4[提交Requirement类型Issue] |
| 54 | + |
| 55 | + A3 --> A5{已有Issue?} |
| 56 | + A5 -->|有| A6[认领该Issue] |
| 57 | + A5 -->|无| A7[创建Issue并认领] |
| 58 | + A7 --> A6 |
| 59 | + A6 --> A19 |
| 60 | + |
| 61 | + A4 --> A10{SIG组决策} |
| 62 | + A10 -->|拒绝| A11[关闭Issue] |
| 63 | + A10 -->|接纳| A12[添加accepted标签] |
| 64 | + A12 --> A13[设计系统方案] |
| 65 | + A13 --> A14[编写/修改RFC] |
| 66 | + A14 --> A15[提交包含RFC的PR] |
| 67 | + A15 --> A16{Maintainer评审} |
| 68 | + A16 -->|提出意见| A14 |
| 69 | + A16 -->|通过| A17[合入RFC] |
| 70 | + A17 --> A19[修改/实现代码,提交PR] |
| 71 | + |
| 72 | + A19 --> A20{Committer检视} |
| 73 | + A20 -->|检视意见| A21[修改] |
| 74 | + A21 --> A20 |
| 75 | + A20 -->|通过| A24[合入PR] |
| 76 | +``` |
| 77 | + |
| 78 | +### 简单问题处理 |
| 79 | + |
| 80 | +1. 查询并认领Issue |
| 81 | + |
| 82 | + - 现在Issue列表中查询该问题是否有对应的Issue; |
| 83 | + - **如有对应Issue**:直接认领该Issue; |
| 84 | + - **如无对应Issue**:创建新的Issue并认领。 |
| 85 | + |
| 86 | +2. 修改代码并提交PR |
| 87 | + |
| 88 | + - 需要满足编码规范与PR规范; |
| 89 | + - 确保包含触发Bug的回归测试。 |
| 90 | + |
| 91 | +3. 代码评审与合入 |
| 92 | + |
| 93 | + - 负责对应模块或组件的Committer检视代码并反馈检视意见,请根据意见修改;没有问题后,添加`/lgtm`和`/approve`标签并合入。 |
| 94 | + |
| 95 | + |
| 96 | +### 增加新功能或新特性 |
| 97 | + |
| 98 | + |
| 99 | +1. 提交Requirement类型Issue |
| 100 | + |
| 101 | + - 在代码仓提交Requirement类型的Issue; |
| 102 | + - 详细描述:使用场景、业务价值、大致技术方案; |
| 103 | + - 在社区发起讨论,SIG组决策是否接纳该需求;如果接纳,添加`accepted`标签。 |
| 104 | + |
| 105 | +2. 系统方案设计 |
| 106 | + |
| 107 | + - 需求被接纳后,设计详细的系统方案; |
| 108 | + - 在 `docs/rfcs` 目录下创建markdown格式的RFC文件,并按RFC模板撰写系统方案; |
| 109 | + - 提交PR。 |
| 110 | + |
| 111 | +3. 系统方案评审 |
| 112 | + |
| 113 | + - 详细设计方案通过包含RFC的PR进行评审; |
| 114 | + - 过程中请针对评审意见进行方案修改; |
| 115 | + |
| 116 | + |
| 117 | +4. RFC合入 |
| 118 | + |
| 119 | + - 所有Maintainer对方案均无异议后,由Maintainer添加`/lgtm`和`/approve`标签合入; |
| 120 | + - 合入的RFC方案作为后续代码实施的合约,代码实现需要遵循RFC方案。 |
| 121 | + |
| 122 | +5. 软件实现 |
| 123 | + |
| 124 | + - 按照RFC方案实现代码,并提交PR; |
| 125 | + - 必须包含对应的测试代码(包含单元测试与系统测试)。 |
| 126 | + |
| 127 | +6. 代码评审与合入 |
| 128 | + |
| 129 | + - 负责对应模块或组件的Committer检视代码并反馈检视意见,请根据意见修改;没有问题后,添加`/lgtm`和`/approve`标签并合入。 |
| 130 | + |
| 131 | +--- |
| 132 | + |
| 133 | +## 争议处理 |
| 134 | + |
| 135 | +存在争议的Issue、PR或RFC可以在[SIG工作会议](https://etherpad-cann.meeting.osinfra.cn/p/sig-hccl)上申报议题,由SIG组决策。 |
| 136 | + |
| 137 | + |
| 138 | +*本文档由社区维护,如有变更建议,请在Issue中提出。* |
| 139 |
| ... | @@ -14,7 +14,7 @@ |
| 2 | <policylist> |
| 3 | <policy name="projectPolicy" desc=""> |
| 4 | <!--policyitem type="compatibility" name="GPL-2.0+" path="abc/.*" desc="Process that runs independently, invoked by the X process."/--> |
| 5 | - <policyitem type="license" name="cann License" path=".*" desc="Dynamically linked by module X"/> |
| 6 | + <policyitem type="license" name="CANN-2.0" path=".*" desc="Dynamically linked by module X"/> |
| 7 | <!--policyitem type="copyright" name="xxx" path="abc/.*" rule="may" group="defaultGroup" filefilter="copyrightPolicyFilter" desc="Developed by X Company"/--> |
| 8 | </policy> |
| 9 | </policylist> |
| 10 |
| ... | @@ -33,6 +33,12 @@ HCOMM通信基础库采用分层解耦的设计思路,将通信能力划分为 |
| 2 | | │ ├── base # 通信算法模板 |
| 3 | | │ ├── impl # 通信算法实现 |
| 4 | | │ └── pub_inc # 通信算法模块头文件 |
| 5 | +│ ├── commom # 公共基础功能目录 |
| 6 | +| │ ├── debug # 调试配置管理 |
| 7 | +| │ ├── error_code # 错误码管理 |
| 8 | +| │ ├── health # 健康检查与一致性校验 |
| 9 | +| │ ├── launch_device # kernel加载处理 |
| 10 | +| │ └── stream # 流管理工具 |
| 11 | │ ├── framework # 通信框架源码目录 |
| 12 | | │ ├── cluster_maintenance # 集群维护,包括:快照、心跳、算子重执行等 |
| 13 | | │ ├── common # 通信框架通用逻辑 |
| ... | @@ -42,6 +48,15 @@ HCOMM通信基础库采用分层解耦的设计思路,将通信能力划分为 |
| 15 | | │ ├── inc # 通信框架模块头文件 |
| 16 | | │ ├── nslbdp # 数据面网络负载均衡 |
| 17 | | │ └── op_base # 通信域、单算子接口入口 |
| 18 | +│ ├── hccd # 提供进程间点对点通信能力 |
| 19 | +│ ├── legacy # 历史版本兼容目录 |
| 20 | +| │ ├── common # 公共基础组件 |
| 21 | +| │ ├── framework # 框架核心实现 |
| 22 | +| │ ├── include # 公共接口头文件 |
| 23 | +| │ ├── interface # 接口适配层 |
| 24 | +| │ ├── local_build # 本地构建工具 |
| 25 | +| │ ├── service # 服务层 |
| 26 | +| │ └── unified_platform # 统一平台层 |
| 27 | │ └── platform # 通信平台源码目录 |
| 28 | | │ ├── comm_primitive # 通信原语 |
| 29 | | │ ├── common # 通信平台通用逻辑 |
| ... | @@ -51,6 +66,10 @@ HCOMM通信基础库采用分层解耦的设计思路,将通信能力划分为 |
| 31 | | │ ├── ping_mesh # 网络探测功能 |
| 32 | | │ ├── resource # 通信资源管理 |
| 33 | | │ └── task # 下发任务管理 |
| 34 | +│ ├── pub_inc # 公共接口头文件目录 |
| 35 | +| │ ├── aicpu # AICPU 专用接口 |
| 36 | +| │ ├── inner # 内部实现专用接口 |
| 37 | +| │ └── new # 新架构下的公共接口 |
| 38 | ├── python # Python 包 |
| 39 | ├── include # 对外头文件 |
| 40 | ├── pkg_inc # 包间接口头文件 |
| ... | @@ -77,6 +96,7 @@ HCOMM通信基础库采用分层解耦的设计思路,将通信能力划分为 |
| 42 | ## 📖 学习教程 |
| 43 | |
| 44 | HCCL提供了使用指南、通信算子开发指南、技术文章、培训视频,详细可参见 [HCCL 参考资料](./docs/README.md)。 |
| 45 | +此外,HCCL还提供了QuickStart指南、常见FAQ等wiki,详细可参见 [WIKI](https://gitcode.com/cann/hcomm/wiki)。 |
| 46 | |
| 47 | ## 📝 相关信息 |
| 48 | |
| 49 |
| ... | @@ -30,7 +30,8 @@ |
| 2 | | 依赖 | 不涉及 | cmake/third_party/gtest.cmake | https://gitcode.com/cann-src-third-party/googletest/releases/download/v1.14.0/googletest-1.14.0.tar.gz | 从 gitcode 下载 googletest 源码,作为编译依赖 | |
| 3 | | 依赖 | 不涉及 | cmake/third_party/mockcpp.cmake | https://gitcode.com/cann-src-third-party/mockcpp/releases/download/v2.7-h4/mockcpp-2.7.tar.gz | 从 gitcode 下载 mockcpp 源码,作为编译依赖 | |
| 4 | | 依赖 | 不涉及 | cmake/third_party/protobuf.cmake | https://gitcode.com/cann-src-third-party/protobuf/releases/download/v25.1/protobuf-25.1.tar.gz | 从 gitcode 下载 protobuf 源码,作为编译依赖 | |
| 5 | - |
| 6 | +| 依赖 | 不涉及 | rdma-core | https://gitcode.com/cann-src-third-party/rdma-core/releases/download/v42.7-h1/rdma-core-42.7.tar.gz.gz | 从 gitcode 下载 rdma-core 源码,作为编译依赖 | | |
| 7 | +| 依赖 | 不涉及 | rdma-core-patch | https://gitcode.com/cann-src-third-party/rdma-core/releases/download/v42.7-h1/rdma-core-42.7.patch.gz | 从 gitcode 下载 rdma-core-patch 源码,作为编译依赖 | |
| 8 | --- |
| 9 | |
| 10 | ## 端口声明 |
| 11 |
| ... | @@ -30,3 +30,6 @@ protobuf: |
| 2 | abseil-cpp: |
| 3 | version: 20250127.0 |
| 4 | type: test |
| 5 | +rdma-core: |
| 6 | + version: v42.7-h1 |
| 7 | + type: build |
| 8 | \ No newline at end of file |
| 9 |
| ... | @@ -147,12 +147,6 @@ test/ut/depends/include/acl/acl_prof.h |
| 2 | test/ut/depends/pkg_inc/runtime/runtime/mem.h |
| 3 | test/ut/depends/include/acl/acl_tdt.h |
| 4 | test/ut/depends/include/driver/ascend_hal_external.h |
| 5 | -src/platform/hccp/external_depends/inc/driver/hwts_task_info.h |
| 6 | -src/platform/hccp/external_depends/inc/driver/ascend_inpackage_hal.h |
| 7 | -src/platform/hccp/external_depends/inc/driver/ascend_hal_base.h |
| 8 | -src/platform/hccp/external_depends/inc/driver/ascend_hal_external.h |
| 9 | -src/platform/hccp/external_depends/inc/driver/ascend_hal_error.h |
| 10 | -src/platform/hccp/external_depends/inc/driver/ascend_hal.h |
| 11 | |
| 12 | Copyright notice(s): |
| 13 | Copyright 2019-2020 Huawei Technologies Co., Ltd |
| 14 |
| ... | @@ -0,0 +1,27 @@ |
| 2 | +src/framework/device/framework/aicpu_communicator.cc |
| 3 | +src/framework/device/framework/aicpu_cache_manager.cc |
| 4 | +src/framework/communicator/impl/independent_op/data_api/sync_data_aicpu_ts.cc |
| 5 | +src/framework/communicator/impl/hccl_communicator_device.cc |
| 6 | +src/framework/communicator/hccl_comm_device.cc |
| 7 | +src/framework/communicator/impl/independent_op/data_api/hccl_api_data_aicpu_ts.cc |
| 8 | +src/framework/communicator/impl/independent_op/data_api/hccl_api_data_cpu.cc |
| 9 | +src/framework/next/coll_comms/communicator/aicpu/aicpu_indop_process.cc |
| 10 | +src/framework/next/coll_comms/dfx/hcclCommOp.cc |
| 11 | +src/framework/device/debug/dfx/taskexception/task_exception.cc |
| 12 | +src/framework/next/coll_comms/api_c_adpt/coll_comm_res_c_adpt.cc |
| 13 | +src/framework/device/framework/aicpu_communicator.cc |
| 14 | +src/framework/device/framework/aicpu_communicator.h |
| 15 | +src/framework/next/coll_comms/communicator/aicpu/coll_comm_aicpu.cc |
| 16 | +src/framework/next/comms/endpoint_pairs/channels/channel_process.cc |
| 17 | +src/framework/next/comms/endpoint_pairs/channels/aicpu/device/aicpu_channel_process.cc |
| 18 | +src/legacy/framework/dfx/aicpu/profiling/profiling_command_handle_lite.cc |
| 19 | +src/framework/next/coll_comms/api_c_adpt/dev/dev_coll_comm_c_adpt.cc |
| 20 | +src/legacy/unified_platform/resource/transport/aicpu/p2p_transport_lite_impl.cc |
| 21 | +src/legacy/unified_platform/resource/transport/aicpu/ub_transport_lite_impl.cc |
| 22 | +src/legacy/unified_platform/resource/transport/p2p_transport.cc |
| 23 | +src/legacy/unified_platform/resource/stream/stream.cc |
| 24 | +src/legacy/unified_platform/resource/notify/ipc_remote_notify.cc |
| 25 | +src/legacy/interface/rank_graph_interface.cc |
| 26 | +src/framework/next/comms/endpoint_pairs/channels/aicpu/aicpu_ts_p2p_channel.cc |
| 27 | +src/framework/next/comms/endpoint_pairs/channels/channel.cc |
| 28 | +src/framework/next/comms/common/orion_adpt_utils.cc |
| 29 |
| ... | @@ -37,16 +37,10 @@ BUILD_CB_TEST="false" |
| 2 | |
| 3 | ENABLE_UT="off" |
| 4 | ENABLE_ST="off" |
| 5 | +ST_TASKS=() |
| 6 | +ENABLE_GCOV="off" |
| 7 | +ENABLE_NO_EXEC="off" |
| 8 | CMAKE_BUILD_TYPE="Debug" |
| 9 | -HCOMM_LIB_NAME="libhcomm.so" |
| 10 | -INSTALL_XML_FILE="${CURRENT_DIR}/scripts/package/module/ascend/CommLib.xml" |
| 11 | -ORION_HCCL_V2="<file value=\"libhccl_v2.so\" file_type=\"shared\" release_type=\"debug\"/>" |
| 12 | -ORION_ALG_FRAME="<file value=\"libhccl_v2_alg_frame.so\" file_type=\"shared\" release_type=\"debug\"/>" |
| 13 | -ORION_ALG_REPO="<file value=\"libhccl_v2_native_alg_repo.so\" file_type=\"shared\" release_type=\"debug\"/>" |
| 14 | -ORION_AIV_OP="<file value=\"hccl_aiv_op_910_95.o\"/>" |
| 15 | -DPU_INSTALL_PATH="opp/built-in/op_impl/dpu" |
| 16 | -DPU_JSON="<file value=\"libccl_dpu.json\"/>" |
| 17 | -DPU_LIB="<file value=\"libccl_dpu.so\" file_type=\"shared\" install_softlink=\"\$(TARGET_ENV)/lib64/libccl_dpu.so\"/>" |
| 18 | |
| 19 | if [ "${USER_ID}" != "0" ]; then |
| 20 | DEFAULT_TOOLKIT_INSTALL_DIR="${HOME}/Ascend/ascend-toolkit/latest" |
| ... | @@ -81,11 +75,17 @@ function clean() |
| 22 | mkdir -p ${BUILD_DIR} |
| 23 | } |
| 24 | |
| 25 | +function rmdir() |
| 26 | +{ |
| 27 | + if [ "${DO_NOT_CLEAN}" = "false" ] && [ $# -gt 0 ]; then |
| 28 | + rm -rf "$@" |
| 29 | + fi |
| 30 | +} |
| 31 | + |
| 32 | function cmake_config() |
| 33 | { |
| 34 | - local extra_option="$1" |
| 35 | - log "Info: cmake config ${CUSTOM_OPTION} ${extra_option} ." |
| 36 | - cmake .. ${CUSTOM_OPTION} ${extra_option} |
| 37 | + log "Info: cmake config ${CUSTOM_OPTION} $*" |
| 38 | + cmake .. ${CUSTOM_OPTION} "$@" |
| 39 | } |
| 40 | |
| 41 | function build() |
| ... | @@ -103,7 +103,7 @@ function build_package(){ |
| 43 | function build_device(){ |
| 44 | cmake_config |
| 45 | log "Info: build_device" |
| 46 | - TARGET_LIST="hccp_service.bin rs ccl_kernel_plf ccl_kernel_plf_a ccl_kernel aicpu_custom_json aicpu_custom" |
| 47 | + TARGET_LIST="hccp_service.bin rs net_co ccl_kernel_plf ccl_kernel_plf_a ccl_kernel aicpu_custom_json aicpu_custom" |
| 48 | echo "TARGET_LIST=${TARGET_LIST}" |
| 49 | PKG_TARGET_LIST="generate_device_hccp_package generate_device_aicpu_package" |
| 50 | echo "PKG_TARGET_LIST=${PKG_TARGET_LIST}" |
| ... | @@ -129,58 +129,74 @@ function build_cb_test_verify(){ |
| 52 | bash build.sh |
| 53 | } |
| 54 | |
| 55 | -function build_test() { |
| 56 | - ENABLE_ST="on" |
| 57 | - cmake_config -DENABLE_ST=${ENABLE_ST} |
| 58 | - |
| 59 | - LIBRARY_DIR="${BUILD_DIR}/test:${ASCEND_HOME_PATH}/lib64:" |
| 60 | - # 每日构建sdk包安装路径 |
| 61 | - if [ -d "${ASCEND_HOME_PATH}/opensdk" ];then |
| 62 | - LIBRARY_DIR="${LIBRARY_DIR}${ASCEND_HOME_PATH}/opensdk/opensdk/gtest_shared/lib64:" |
| 63 | +function run_ctest() { |
| 64 | + # 设置 --noexec 选项,则跳过执行测试用例 |
| 65 | + if [[ "$ENABLE_NO_EXEC" = "on" ]]; then |
| 66 | + log "Info: Skip executing tests" |
| 67 | + return 0 |
| 68 | fi |
| 69 | |
| 70 | - # 社区sdk包安装路径 |
| 71 | - if [ -d "${ASCEND_HOME_PATH}/../../latest/opensdk" ];then |
| 72 | - LIBRARY_DIR="${LIBRARY_DIR}${ASCEND_HOME_PATH}/../../latest/opensdk/opensdk/gtest_shared/lib64:" |
| 73 | + local suite_name="$1" # "ut" or "st" |
| 74 | + local log_dir="${OUTPUT_PATH}/logs/${suite_name}" |
| 75 | + local ctest_log="${log_dir}/ctest_output.log" |
| 76 | + local ctest_summary="${log_dir}/ctest_summary.log" |
| 77 | + |
| 78 | + # 创建日志目录 |
| 79 | + mk_dir "${log_dir}" |
| 80 | + |
| 81 | + # CTest 执行用例 |
| 82 | + ctest ${JOB_NUM} \ |
| 83 | + --build-nocmake \ |
| 84 | + --timeout 200 \ |
| 85 | + --output-on-failure \ |
| 86 | + --stop-on-failure \ |
| 87 | + --test-output-size-failed 10000000 \ |
| 88 | + -O "${ctest_log}" \ |
| 89 | + 2>&1 | tee "${ctest_summary}" |
| 90 | + |
| 91 | + # 超时时间:200s |
| 92 | + local ctest_ret=${PIPESTATUS[0]} |
| 93 | + if [ "${ctest_ret}" -eq 137 ]; then |
| 94 | + log "Error: ctest timeout: execute more than 200s killed" |
| 95 | + exit 1 |
| 96 | fi |
| 97 | |
| 98 | - GCC_MAJOR=`gcc -dumpversion | cut -d. -f1` |
| 99 | - if [ "${ASAN}" == "true" ];then |
| 100 | - ARCH=$(uname -m) |
| 101 | - if [[ $ARCH == "x86_64" || $ARCH == "i386" || $ARCH == "i686" ]]; then |
| 102 | - PRELOAD="/usr/lib/gcc/x86_64-linux-gnu/${GCC_MAJOR}/libasan.so:/usr/lib/gcc/x86_64-linux-gnu/${GCC_MAJOR}/libstdc++.so" |
| 103 | - elif [[ $ARCH == "aarch64" || $ARCH == "armv8l" || $ARCH == "armv7l" ]]; then |
| 104 | - PRELOAD="/usr/lib/gcc/aarch64-linux-gnu/${GCC_MAJOR}/libasan.so:/usr/lib/gcc/aarch64-linux-gnu/${GCC_MAJOR}/libstdc++.so" |
| 105 | - else |
| 106 | - echo "未知架构: $ARCH" |
| 107 | - fi |
| 108 | - echo "PRELOAD is ${PRELOAD}" |
| 109 | - ASAN_OPT="detect_leaks=0" |
| 110 | + return ${ctest_ret} |
| 111 | +} |
| 112 | + |
| 113 | +function build_st() { |
| 114 | + log "Info: build_st" |
| 115 | + mk_dir "${BUILD_DIR}" |
| 116 | + cd "${BUILD_DIR}" |
| 117 | + |
| 118 | + # 配置 ST 用例代码 |
| 119 | + local st_tasks=$(printf '%s;' "${ST_TASKS[@]}" | sed 's/;$//') |
| 120 | + log "Info: build_st: ST_TASKS=${st_tasks}" |
| 121 | + cmake_config -DPRODUCT_SIDE=host \ |
| 122 | + -DENABLE_GCOV=${ENABLE_GCOV} \ |
| 123 | + -DENABLE_TEST=${ENABLE_TEST} \ |
| 124 | + -DENABLE_ST=${ENABLE_ST} \ |
| 125 | + -DST_TASKS=${st_tasks} |
| 126 | + if [ $? -ne 0 ]; then |
| 127 | + log "Error: build_st: cmake config failed" |
| 128 | + exit 1 |
| 129 | fi |
| 130 | |
| 131 | - if [ "${TEST_TASK_NAME}" == "open_hccl_test" ] || [ "$TEST" = "all" ];then |
| 132 | - build open_hccl_test |
| 133 | - export LD_LIBRARY_PATH=${LIBRARY_DIR}${LD_LIBRARY_PATH} && export LD_PRELOAD=${PRELOAD} && export ASAN_OPTIONS=${ASAN_OPT} \ |
| 134 | - && ${BUILD_DIR}/test/st/algorithm/testcase/testcase/open_hccl_test |
| 135 | + # 编译 ST 用例代码 |
| 136 | + cmake --build . ${JOB_NUM} |
| 137 | + if [ $? -ne 0 ]; then |
| 138 | + log "Error: build_st: cmake build failed" |
| 139 | + exit 1 |
| 140 | fi |
| 141 | |
| 142 | - if [ "${TEST_TASK_NAME}" == "executor_hccl_test" ] || [ "$TEST" = "all" ];then |
| 143 | - build executor_hccl_test |
| 144 | - export LD_LIBRARY_PATH=${LIBRARY_DIR}${LD_LIBRARY_PATH} && export LD_PRELOAD=${PRELOAD} && export ASAN_OPTIONS=${ASAN_OPT} \ |
| 145 | - && ${BUILD_DIR}/test/st/algorithm/testcase/executor_testcase_generalization/executor_hccl_test |
| 146 | + # CTest 运行用例 |
| 147 | + run_ctest "st" |
| 148 | + if [ $? -ne 0 ]; then |
| 149 | + log "Error: build_st: ctest execution failed" |
| 150 | + exit 1 |
| 151 | fi |
| 152 | |
| 153 | - if [ "${TEST_TASK_NAME}" == "executor_reduce_hccl_test" ] || [ "$TEST" = "all" ];then |
| 154 | - build executor_reduce_hccl_test |
| 155 | - export LD_LIBRARY_PATH=${LIBRARY_DIR}${LD_LIBRARY_PATH} && export LD_PRELOAD=${PRELOAD} && export ASAN_OPTIONS=${ASAN_OPT} \ |
| 156 | - && ${BUILD_DIR}/test/st/algorithm/testcase/executor_reduce_testcase_generalization/executor_reduce_hccl_test |
| 157 | - fi |
| 158 | - |
| 159 | - if [ "${TEST_TASK_NAME}" == "executor_pipeline_hccl_test" ] || [ "$TEST" = "all" ];then |
| 160 | - build executor_pipeline_hccl_test |
| 161 | - export LD_LIBRARY_PATH=${LIBRARY_DIR}${LD_LIBRARY_PATH} && export LD_PRELOAD=${PRELOAD} && export ASAN_OPTIONS=${ASAN_OPT} \ |
| 162 | - && ${BUILD_DIR}/test/st/algorithm/testcase/executor_alltoall_A3_pipeline_testcase/executor_pipeline_hccl_test |
| 163 | - fi |
| 164 | + log "Info: Build and tests completed successfully!" |
| 165 | } |
| 166 | |
| 167 | function build_kernel() { |
| ... | @@ -195,142 +211,56 @@ function mk_dir() { |
| 169 | echo "created ${create_dir}" |
| 170 | } |
| 171 | |
| 172 | -# create build path |
| 173 | function build_ut() { |
| 174 | - echo "create build directory and build"; |
| 175 | - mk_dir ${OUTPUT_PATH} |
| 176 | - mk_dir "${BUILD_DIR}" |
| 177 | - local report_dir="${OUTPUT_PATH}/report/ut" && mk_dir "${report_dir}" |
| 178 | - cd "${BUILD_DIR}" |
| 179 | - unset LD_LIBRARY_PATH |
| 180 | + log "Info: build_ut" |
| 181 | + mk_dir "${BUILD_DIR}" |
| 182 | + cd "${BUILD_DIR}" |
| 183 | |
| 184 | - local LLT_KILL_TIME=1200 |
| 185 | - CMAKE_ARGS="-DPRODUCT_SIDE=host \ |
| 186 | - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \ |
| 187 | - -DCMAKE_INSTALL_PREFIX=${BUILD_OUTPUT_DIR} \ |
| 188 | - -DASCEND_INSTALL_PATH=${ASCEND_INSTALL_PATH} \ |
| 189 | - -DCANN_3RD_LIB_PATH=${CANN_3RD_LIB_PATH} \ |
| 190 | - -DENABLE_COV=${ENABLE_COV} \ |
| 191 | - -DENABLE_TEST=${ENABLE_TEST} \ |
| 192 | - -DENABLE_UT=${ENABLE_UT} \ |
| 193 | - -DOUTPUT_PATH=${OUTPUT_PATH} \ |
| 194 | - -DLLT_KILL_TIME=${LLT_KILL_TIME}" |
| 195 | + # 避免加载系统库 |
| 196 | + unset LD_LIBRARY_PATH |
| 197 | |
| 198 | - echo "CMAKE_ARGS=${CMAKE_ARGS}" |
| 199 | - cmake ${CMAKE_ARGS} .. |
| 200 | - if [ $? -ne 0 ]; then |
| 201 | - echo "execute command: cmake ${CMAKE_ARGS} .. failed." |
| 202 | - return 1 |
| 203 | - fi |
| 204 | + # 配置 UT 用例代码 |
| 205 | + cmake_config -DPRODUCT_SIDE=host \ |
| 206 | + -DENABLE_TEST=${ENABLE_TEST} \ |
| 207 | + -DENABLE_UT=${ENABLE_UT} \ |
| 208 | + -DENABLE_GCOV=${ENABLE_GCOV} |
| 209 | + if [ $? -ne 0 ]; then |
| 210 | + log "Error: build_ut: cmake config failed" |
| 211 | + exit 1 |
| 212 | + fi |
| 213 | |
| 214 | - # make all |
| 215 | - cmake --build . -j${CPU_NUM} |
| 216 | - run_ret=${PIPESTATUS[0]} |
| 217 | - echo "exit code: ${run_ret}" |
| 218 | - if [ "${run_ret}" -eq 137 ] |
| 219 | - then |
| 220 | - echo "timeout: execute more than ${LLT_KILL_TIME}s killed" |
| 221 | - exit 1 |
| 222 | - fi |
| 223 | - if [ $? -ne 0 ]; then |
| 224 | - echo "execute command: make -j${THREAD_NUM} failed." |
| 225 | - return 1 |
| 226 | - fi |
| 227 | - echo "build success!" |
| 228 | + # 编译 UT 用例代码 |
| 229 | + cmake --build . ${JOB_NUM} |
| 230 | + if [ $? -ne 0 ]; then |
| 231 | + log "Error: build_ut: cmake build failed" |
| 232 | + exit 1 |
| 233 | + fi |
| 234 | + |
| 235 | + # CTest 运行用例 |
| 236 | + run_ctest "ut" |
| 237 | + if [ $? -ne 0 ]; then |
| 238 | + log "Error: build_ut: ctest execution failed" |
| 239 | + exit 1 |
| 240 | + fi |
| 241 | + |
| 242 | + log "Info: Build and tests completed successfully!" |
| 243 | } |
| 244 | |
| 245 | function make_ut_gov() { |
| 246 | - if [[ "X$ENABLE_UT" = "Xon" || "X$ENABLE_COV" = "Xon" ]]; then |
| 247 | + if [[ "X$ENABLE_UT" = "Xon" && "X$ENABLE_GCOV" = "Xon" ]]; then |
| 248 | echo "Generated coverage statistics, please wait..." |
| 249 | cd ${CURRENT_DIR} |
| 250 | rm -rf ${CURRENT_DIR}/cov |
| 251 | mkdir -p ${CURRENT_DIR}/cov |
| 252 | - lcov -c -d ${BUILD_DIR}/test/ut/ -o cov/all.info |
| 253 | - lcov -r cov/all.info */src/platform/hccp/external_depends/* -o cov/tmp.info |
| 254 | - lcov -e cov/all.info */src/algorithm/* */src/common/* */src/hccd/* */src/legacy/* */src/platform/* */src/pub_inc/* -o cov/coverage.info |
| 255 | - # LCOV_COMMAND="lcov -r cov/tmp.info ${CURRENT_DIR}src/* -o cov/coverage.info" && ${LCOV_COMMAND} |
| 256 | - # lcov -r cov/tmp.info "/usr/*" "${OUTPUT_PATH}/*" "${BASEPATH}/test/*" "${ASCEND_INSTALL_PATH}/*" "${CANN_3RD_LIB_PATH}/*" -o cov/coverage.info |
| 257 | + lcov -c -d ${BUILD_DIR}/test/ut/ -d ${BUILD_DIR}/test/legacy/ut/ -o cov/coverage.info |
| 258 | + lcov -r cov/coverage.info */src/platform/hccp/external_depends/* -o cov/coverage.info |
| 259 | + lcov -e cov/coverage.info */src/algorithm/* */src/common/* */src/hccd/* */src/legacy/* */src/framework/* */src/platform/* */src/pub_inc/* -o cov/coverage.info |
| 260 | |
| 261 | cd ${CURRENT_DIR}/cov |
| 262 | genhtml coverage.info |
| 263 | fi |
| 264 | } |
| 265 | |
| 266 | -function run_ut() { |
| 267 | - if [[ "X$ENABLE_UT" = "Xon" ]]; then |
| 268 | - local ut_dir="${BUILD_DIR}/test" |
| 269 | - echo "ut_dir = ${ut_dir}" |
| 270 | - find "$ut_dir" -type f -executable | while read -r ut_exec; do |
| 271 | - filename=$(basename "$ut_exec") |
| 272 | - echo "Executing: $filename" |
| 273 | - ${ut_exec} |
| 274 | - done |
| 275 | - else |
| 276 | - echo "Unit tests is not enabled, sh build.sh with parameter -u or --ut to enable it" |
| 277 | - fi |
| 278 | -} |
| 279 | - |
| 280 | -function xml_add_orion_so() { |
| 281 | - if [[ ! -f "$INSTALL_XML_FILE" ]]; then |
| 282 | - echo "error:file $INSTALL_XML_FILE not exist." |
| 283 | - exit 1 |
| 284 | - fi |
| 285 | - |
| 286 | - strings=("$ORION_HCCL_V2" "$ORION_ALG_FRAME" "$ORION_ALG_REPO" "$ORION_AIV_OP") |
| 287 | - dpu_json_string="$DPU_JSON" |
| 288 | - dpu_lib_string="$DPU_LIB" |
| 289 | - not_found=() |
| 290 | - for str in "${strings[@]}"; do |
| 291 | - if ! grep -q "$str" "$INSTALL_XML_FILE"; then |
| 292 | - not_found+=("$str") |
| 293 | - fi |
| 294 | - done |
| 295 | - |
| 296 | - if [[ ${#not_found[@]} -eq 0 ]]; then |
| 297 | - echo "orion lib has been existed in $INSTALL_XML_FILE" |
| 298 | - return |
| 299 | - fi |
| 300 | - |
| 301 | - insert_content="" |
| 302 | - for str in "${not_found[@]}"; do |
| 303 | - insert_content+="$str"$' |
| 304 | - ' |
| 305 | - done |
| 306 | - |
| 307 | - temp_file=$(mktemp) |
| 308 | - while IFS= read -r line; do |
| 309 | - echo "$line" >> "$temp_file" |
| 310 | - if [[ "$line" == *"$HCOMM_LIB_NAME"* ]]; then |
| 311 | - echo "$insert_content" >> "$temp_file" |
| 312 | - fi |
| 313 | - |
| 314 | - if [[ "$line" == *"$DPU_INSTALL_PATH"* && "$line" == *"json"* ]]; then |
| 315 | - echo "$dpu_json_string" >> "$temp_file" |
| 316 | - fi |
| 317 | - |
| 318 | - if [[ "$line" == *"$DPU_INSTALL_PATH"* && "$line" == *"lib64"* ]]; then |
| 319 | - echo "$dpu_lib_string" >> "$temp_file" |
| 320 | - fi |
| 321 | - done < "$INSTALL_XML_FILE" |
| 322 | - mv "$temp_file" "$INSTALL_XML_FILE" |
| 323 | -} |
| 324 | - |
| 325 | -function xml_delete_orion_so() { |
| 326 | - if [[ ! -f "$INSTALL_XML_FILE" ]]; then |
| 327 | - echo "error:file $INSTALL_XML_FILE not exist." |
| 328 | - exit 1 |
| 329 | - fi |
| 330 | - |
| 331 | - temp_file=$(mktemp) |
| 332 | - while IFS= read -r line; do |
| 333 | - if ! [[ "$line" == *"$ORION_HCCL_V2"* || "$line" == *"$ORION_ALG_FRAME"* || "$line" == *"$ORION_ALG_REPO"* || |
| 334 | - "$line" == *"$ORION_AIV_OP"* || "$line" == *"$DPU_JSON"* || "$line" == *"$DPU_LIB"* ]]; then |
| 335 | - echo "$line" >> "$temp_file" |
| 336 | - fi |
| 337 | - done < "$INSTALL_XML_FILE" |
| 338 | - mv "$temp_file" "$INSTALL_XML_FILE" |
| 339 | -} |
| 340 | - |
| 341 | # print usage message |
| 342 | function usage() { |
| 343 | echo "Usage:" |
| ... | @@ -342,12 +272,12 @@ function usage() { |
| 345 | echo "Options:" |
| 346 | echo " -h, --help Print usage" |
| 347 | echo " --asan Enable AddressSanitizer" |
| 348 | - echo " -build-type=<TYPE>" |
| 349 | + echo " --build-type=<TYPE>" |
| 350 | echo " Specify build type (TYPE options: Release/Debug), Default: Release" |
| 351 | echo " -j<N> Set the number of threads used for building, default is 8" |
| 352 | echo " --cann_3rd_lib_path=<PATH>" |
| 353 | echo " Set ascend third_party package install path, default ./output/third_party" |
| 354 | - echo " -p|--package-path <PATH>" |
| 355 | + echo " -p, --package-path <PATH>" |
| 356 | echo " Set ascend package install path, default /usr/local/Ascend/cann" |
| 357 | echo " --sign-script <PATH>" |
| 358 | echo " Set sign-script's path to <PATH>" |
| ... | @@ -355,6 +285,9 @@ function usage() { |
| 360 | echo " Enable to sign" |
| 361 | echo " --version <VERSION>" |
| 362 | echo " Set sign version to <VERSION>" |
| 363 | + echo " -u, --ut Run all unit tests (UT)" |
| 364 | + echo " -s, --st Run all system tests (ST)" |
| 365 | + echo " --noexec Run build and skip executing tests" |
| 366 | echo "" |
| 367 | } |
| 368 | |
| ... | @@ -394,33 +327,97 @@ while [[ $# -gt 0 ]]; do |
| 370 | CANN_3RD_LIB_PATH="$(realpath ${OPTARG#*=})" |
| 371 | shift |
| 372 | ;; |
| 373 | + --noexec) |
| 374 | + ENABLE_NO_EXEC="on" |
| 375 | + shift |
| 376 | + ;; |
| 377 | -u|--ut) |
| 378 | ENABLE_TEST="on" |
| 379 | ENABLE_UT="on" |
| 380 | shift |
| 381 | ;; |
| 382 | -s|--st) |
| 383 | - TEST="all" |
| 384 | + ENABLE_TEST="on" |
| 385 | + ENABLE_ST="on" |
| 386 | + ST_TASKS+=("all") |
| 387 | shift |
| 388 | ;; |
| 389 | --open_hccl_test) |
| 390 | - TEST="partial" |
| 391 | - TEST_TASK_NAME="open_hccl_test" |
| 392 | + ENABLE_TEST="on" |
| 393 | + ENABLE_ST="on" |
| 394 | + ST_TASKS+=("open_hccl_test") |
| 395 | shift |
| 396 | ;; |
| 397 | --executor_hccl_test) |
| 398 | - TEST="partial" |
| 399 | - TEST_TASK_NAME="executor_hccl_test" |
| 400 | + ENABLE_TEST="on" |
| 401 | + ENABLE_ST="on" |
| 402 | + ST_TASKS+=("executor_hccl_test") |
| 403 | shift |
| 404 | ;; |
| 405 | --executor_reduce_hccl_test) |
| 406 | - TEST="partial" |
| 407 | - TEST_TASK_NAME="executor_reduce_hccl_test" |
| 408 | + ENABLE_TEST="on" |
| 409 | + ENABLE_ST="on" |
| 410 | + ST_TASKS+=("executor_reduce_hccl_test") |
| 411 | shift |
| 412 | ;; |
| 413 | --executor_pipeline_hccl_test) |
| 414 | - TEST="partial" |
| 415 | - TEST_TASK_NAME="executor_pipeline_hccl_test" |
| 416 | + ENABLE_TEST="on" |
| 417 | + ENABLE_ST="on" |
| 418 | + ST_TASKS+=("executor_pipeline_hccl_test") |
| 419 | + shift |
| 420 | + ;; |
| 421 | + --legacy_all_testcase) |
| 422 | + ENABLE_TEST="on" |
| 423 | + ENABLE_ST="on" |
| 424 | + ST_TASKS+=("legacy_all_testcase") |
| 425 | + shift |
| 426 | + ;; |
| 427 | + --legacy_aicpu_2d_testcase) |
| 428 | + ENABLE_TEST="on" |
| 429 | + ENABLE_ST="on" |
| 430 | + ST_TASKS+=("legacy_aicpu_2d_testcase") |
| 431 | + shift |
| 432 | + ;; |
| 433 | + --legacy_ccu_2d_testcase) |
| 434 | + ENABLE_TEST="on" |
| 435 | + ENABLE_ST="on" |
| 436 | + ST_TASKS+=("legacy_ccu_2d_testcase") |
| 437 | + shift |
| 438 | + ;; |
| 439 | + --legacy_ccu_1d_hf16p_testcase) |
| 440 | + ENABLE_TEST="on" |
| 441 | + ENABLE_ST="on" |
| 442 | + ST_TASKS+=("legacy_ccu_1d_hf16p_testcase") |
| 443 | + shift |
| 444 | + ;; |
| 445 | + --legacy_ccu_1d_testcase_part1) |
| 446 | + ENABLE_TEST="on" |
| 447 | + ENABLE_ST="on" |
| 448 | + ST_TASKS+=("legacy_ccu_1d_testcase_part1") |
| 449 | + shift |
| 450 | + ;; |
| 451 | + --legacy_ccu_1d_testcase_part2) |
| 452 | + ENABLE_TEST="on" |
| 453 | + ENABLE_ST="on" |
| 454 | + ST_TASKS+=("legacy_ccu_1d_testcase_part2") |
| 455 | + shift |
| 456 | + ;; |
| 457 | + --legacy_alg_ccu_reduce) |
| 458 | + ENABLE_TEST="on" |
| 459 | + ENABLE_ST="on" |
| 460 | + ST_TASKS+=("legacy_alg_ccu_reduce") |
| 461 | + shift |
| 462 | + ;; |
| 463 | + --legacy_function_ut_testcase) |
| 464 | + ENABLE_TEST="on" |
| 465 | + ENABLE_ST="on" |
| 466 | + ST_TASKS+=("legacy_function_ut_testcase") |
| 467 | + shift |
| 468 | + ;; |
| 469 | + --legacy_alg_testcase) |
| 470 | + ENABLE_TEST="on" |
| 471 | + ENABLE_ST="on" |
| 472 | + ST_TASKS+=("legacy_alg_testcase") |
| 473 | shift |
| 474 | ;; |
| 475 | --aicpu) # 新增选项,用于只编译 ccl_kernel.so |
| ... | @@ -440,6 +437,7 @@ while [[ $# -gt 0 ]]; do |
| 477 | shift |
| 478 | ;; |
| 479 | --cov) |
| 480 | + ENABLE_GCOV="on" |
| 481 | COV="true" |
| 482 | shift |
| 483 | ;; |
| ... | @@ -481,20 +479,20 @@ while [[ $# -gt 0 ]]; do |
| 485 | esac |
| 486 | done |
| 487 | |
| 488 | -if [ -n "${TEST}" ];then |
| 489 | - CUSTOM_OPTION="${CUSTOM_OPTION} -DENABLE_TEST=ON" |
| 490 | -fi |
| 491 | - |
| 492 | if [ "${KERNEL}" == "true" ];then |
| 493 | CUSTOM_OPTION="${CUSTOM_OPTION} -DKERNEL_MODE=ON -DDEVICE_MODE=ON -DPRODUCT=ascend -DPRODUCT_SIDE=device" |
| 494 | fi |
| 495 | |
| 496 | if [ "${FULL_MODE}" == "true" ];then |
| 497 | CUSTOM_OPTION="${CUSTOM_OPTION} -DFULL_MODE=ON" |
| 498 | +else |
| 499 | + CUSTOM_OPTION="${CUSTOM_OPTION} -DFULL_MODE=OFF" |
| 500 | fi |
| 501 | |
| 502 | if [ "${BUILD_AARCH}" == "true" ];then |
| 503 | CUSTOM_OPTION="${CUSTOM_OPTION} -DAARCH_MODE=ON" |
| 504 | +else |
| 505 | + CUSTOM_OPTION="${CUSTOM_OPTION} -DAARCH_MODE=OFF" |
| 506 | fi |
| 507 | |
| 508 | if [ "${ASAN}" == "true" ];then |
| ... | @@ -505,6 +503,8 @@ if [ "${COV}" == "true" ];then |
| 510 | CUSTOM_OPTION="${CUSTOM_OPTION} -DENABLE_GCOV=ON" |
| 511 | fi |
| 512 | |
| 513 | +CUSTOM_OPTION="${CUSTOM_OPTION} -DASCENDC_DUMP=0" # AIV算子调测阶段可配置为1以打开AscendC打印功能 |
| 514 | + |
| 515 | if [ -n "${ascend_package_path}" ];then |
| 516 | ASCEND_CANN_PACKAGE_PATH=${ascend_package_path} |
| 517 | elif [ -n "${ASCEND_HOME_PATH}" ];then |
| ... | @@ -525,6 +525,7 @@ if [ -n "${third_party_nlohmann_path}" ];then |
| 519 | fi |
| 520 | |
| 521 | CUSTOM_OPTION="${CUSTOM_OPTION} -DCUSTOM_ASCEND_CANN_PACKAGE_PATH=${ASCEND_CANN_PACKAGE_PATH}" |
| 522 | +CUSTOM_OPTION="${CUSTOM_OPTION} -DASCEND_INSTALL_PATH=${ASCEND_CANN_PACKAGE_PATH}" |
| 523 | # CUSTOM_OPTION="${CUSTOM_OPTION} -DCANN_3RD_LIB_PATH=${cann_3rd_lib_path}" |
| 524 | CUSTOM_OPTION="$CUSTOM_OPTION -DCANN_3RD_LIB_PATH=${CANN_3RD_LIB_PATH} -DCANN_UTILS_LIB_PATH=${CANN_UTILS_LIB_PATH}" |
| 525 | |
| ... | @@ -542,9 +543,9 @@ cd ${BUILD_DIR} |
| 527 | |
| 528 | if [ "${ENABLE_UT}" == "on" ]; then |
| 529 | build_ut |
| 530 | - # make_ut_gov |
| 531 | -elif [ -n "${TEST}" ];then |
| 532 | - build_test |
| 533 | + make_ut_gov |
| 534 | +elif [ "${ENABLE_ST}" == "on" ]; then |
| 535 | + build_st |
| 536 | elif [ "${KERNEL}" == "true" ]; then |
| 537 | build_kernel |
| 538 | elif [ "${BUILD_FWK_HLT}" == "true" ]; then |
| ... | @@ -577,7 +578,7 @@ elif [ "${FULL_MODE}" == "true" ]; then |
| 540 | cd .. & cd ${BUILD_DIR} |
| 541 | CUSTOM_OPTION="${CURRENT_CUSTOM_OPTION} -DDEVICE_MODE=OFF -DPRODUCT=ascend -DPRODUCT_SIDE=host -DUSE_ALOG=1" |
| 542 | build_package |
| 543 | - rm -rf ${BUILD_DEVICE_DIR} ${BUILD_HCCD_DIR} |
| 544 | + rmdir ${BUILD_DEVICE_DIR} ${BUILD_HCCD_DIR} |
| 545 | else |
| 546 | cd .. |
| 547 | mkdir -p ${BUILD_DEVICE_DIR} |
| ... | @@ -588,5 +589,5 @@ else |
| 549 | cd .. & cd ${BUILD_DIR} |
| 550 | CUSTOM_OPTION="${CURRENT_CUSTOM_OPTION} -DDEVICE_MODE=OFF -DPRODUCT=ascend -DPRODUCT_SIDE=host -DUSE_ALOG=1" |
| 551 | build_package |
| 552 | - rm -rf ${BUILD_DEVICE_DIR} |
| 553 | + rmdir ${BUILD_DEVICE_DIR} |
| 554 | fi |
| 555 |
| ... | @@ -0,0 +1,24 @@ |
| 2 | +# Copyright (c) 2025 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 | +hcomm: |
| 11 | + commiter: |
| 12 | + "yanyefeng" |
| 13 | + team: "hcomm" |
| 14 | + src: |
| 15 | + release: |
| 16 | + - src |
| 17 | + - include |
| 18 | + unrelease: |
| 19 | + - src/legacy/framework/ccu/ccu_ins/ccu_ins.h |
| 20 | + - src/legacy/service/ |
| 21 | + - src/algorithm/ |
| 22 | + - src/platform/hccp/ |
| 23 | + llt: |
| 24 | + ut_check: true |
| 25 | + st_check: false |
| 26 |
| ... | @@ -134,12 +134,6 @@ set(ASCEND_MOCKCPP_PACKAGE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) |
| 2 | # message(FATAL_ERROR "${THIRD_PARTY_NLOHMANN_PATH} does not exist, please check the setting of THIRD_PARTY_NLOHMANN_PATH.") |
| 3 | # endif() |
| 4 | |
| 5 | -set(ASCEND_SDK_PACKAGE_PATH "${ASCEND_CANN_PACKAGE_PATH}") |
| 6 | -if (NOT EXISTS "${ASCEND_CANN_PACKAGE_PATH}/opensdk") |
| 7 | - # 设置社区包sdk安装位置 |
| 8 | - set(ASCEND_SDK_PACKAGE_PATH "${ASCEND_CANN_PACKAGE_PATH}/../latest") |
| 9 | -endif() |
| 10 | - |
| 11 | #execute_process(COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/cmake/scripts/check_version_compatiable.sh |
| 12 | # ${ASCEND_CANN_PACKAGE_PATH} |
| 13 | # hccl |
| ... | @@ -164,11 +158,11 @@ set(HI_PYTHON "python3" CACHE STRING |
| 15 | message(STATUS "config.cmake KERNEL_MODE=${KERNEL_MODE} BUILD_OPEN_PROJECT=${BUILD_OPEN_PROJECT}") |
| 16 | message(STATUS "config.cmake PRODUCT=${PRODUCT} PRODUCT_SIDE=${PRODUCT_SIDE}") |
| 17 | |
| 18 | -set(INSTALL_LIBRARY_DIR hcomm/lib64) |
| 19 | -set(INSTALL_INCLUDE_DIR hcomm/include) |
| 20 | -set(INSTALL_PKG_INCLUDE_DIR hcomm/pkg_inc) |
| 21 | -set(INSTALL_CCL_KERNEL_JSON_DIR hcomm/built-in/data/op/aicpu) |
| 22 | -set(INSTALL_DPU_KERNEL_JSON_DIR hcomm/built-in/data/op/dpu) |
| 23 | -set(INSTALL_DEVICE_TAR_DIR hcomm/Ascend/aicpu) |
| 24 | +set(INSTALL_LIBRARY_DIR ${CMAKE_SYSTEM_PROCESSOR}-linux/lib64) |
| 25 | +set(INSTALL_INCLUDE_DIR ${CMAKE_SYSTEM_PROCESSOR}-linux/include) |
| 26 | +set(INSTALL_PKG_INCLUDE_DIR ${CMAKE_SYSTEM_PROCESSOR}-linux/pkg_inc) |
| 27 | +set(INSTALL_CCL_KERNEL_JSON_DIR opp/built-in/op_impl/aicpu) |
| 28 | +set(INSTALL_DPU_KERNEL_JSON_DIR opp/built-in/op_impl/dpu) |
| 29 | +set(INSTALL_DEVICE_TAR_DIR compat) |
| 30 | |
| 31 | set(CMAKE_SKIP_RPATH TRUE) |
| 32 |
| ... | @@ -0,0 +1,38 @@ |
| 2 | +# ----------------------------------------------------------------------------------------------------------- |
| 3 | +# Copyright (c) 2026 Huawei Technologies Co., Ltd. |
| 4 | +# This program is free software, you can redistribute it and/or modify it under the terms and conditions of |
| 5 | +# CANN Open Software License Agreement Version 2.0 (the "License"). |
| 6 | +# Please refer to the License for details. You may not use this file except in compliance with the License. |
| 7 | +# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, |
| 8 | +# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. |
| 9 | +# See LICENSE in the root of the software repository for the full text of the License. |
| 10 | +# ----------------------------------------------------------------------------------------------------------- |
| 11 | +# 引入CANN/cmake库 |
| 12 | + |
| 13 | +if(NOT PROJECT_SOURCE_DIR) |
| 14 | + if(CANN_3RD_LIB_PATH AND IS_DIRECTORY "${CANN_3RD_LIB_PATH}/cann-cmake") |
| 15 | + include("${CANN_3RD_LIB_PATH}/cann-cmake/function/prepare.cmake") |
| 16 | + else() |
| 17 | + include(FetchContent) |
| 18 | + |
| 19 | + set(CANN_CMAKE_TAG "master-001") |
| 20 | + if(CANN_3RD_LIB_PATH AND EXISTS "${CANN_3RD_LIB_PATH}/cmake-${CANN_CMAKE_TAG}.tar.gz") |
| 21 | + FetchContent_Declare( |
| 22 | + cann-cmake |
| 23 | + URL "${CANN_3RD_LIB_PATH}/cmake-${CANN_CMAKE_TAG}.tar.gz" |
| 24 | + ) |
| 25 | + else() |
| 26 | + FetchContent_Declare( |
| 27 | + cann-cmake |
| 28 | + GIT_REPOSITORY https://gitcode.com/cann/cmake.git |
| 29 | + GIT_TAG ${CANN_CMAKE_TAG} |
| 30 | + GIT_SHALLOW TRUE |
| 31 | + ) |
| 32 | + endif() |
| 33 | + FetchContent_GetProperties(cann-cmake) |
| 34 | + if(NOT cann-cmake_POPULATED) |
| 35 | + FetchContent_Populate(cann-cmake) |
| 36 | + endif() |
| 37 | + include("${cann-cmake_SOURCE_DIR}/function/prepare.cmake") |
| 38 | + endif() |
| 39 | +endif() |
| 40 | \ No newline at end of file |
| 41 |
| ... | @@ -20,6 +20,7 @@ |
| 2 | # [TARGETS target1 [target2 ...]] |
| 3 | # [FILES file1 [file2 ...]] |
| 4 | # [MANIFEST <manifest_filename>] # e.g., "aicpu_compat_bin_hash.cfg" |
| 5 | +# [TAR_ROOT_DIR <directory>] # e.g., "aicpu_kernels_device" (optional, default: ".") |
| 6 | # ) |
| 7 | # |
| 8 | # Examples: |
| ... | @@ -37,12 +38,21 @@ |
| 10 | # TARGETS app |
| 11 | # FILES "README.md" |
| 12 | # ) |
| 13 | +# |
| 14 | +# # With custom tar root directory |
| 15 | +# pack_targets_and_files( |
| 16 | +# OUTPUT aicpu_hcomm.tar.gz |
| 17 | +# TARGETS ccl_kernel |
| 18 | +# FILES ${CCL_KERNEL_TAR_LIBS} |
| 19 | +# MANIFEST "bin_hash.cfg" |
| 20 | +# TAR_ROOT_DIR "aicpu_kernels_device" |
| 21 | +# ) |
| 22 | # ============================================================================= |
| 23 | set(_FUNC_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}") |
| 24 | function(pack_targets_and_files) |
| 25 | cmake_parse_arguments(ARG |
| 26 | "" |
| 27 | - "OUTPUT;MANIFEST;OUTPUT_TARGET" |
| 28 | + "OUTPUT;MANIFEST;OUTPUT_TARGET;TAR_ROOT_DIR" |
| 29 | "TARGETS;FILES" |
| 30 | ${ARGN} |
| 31 | ) |
| ... | @@ -79,6 +89,14 @@ function(pack_targets_and_files) |
| 33 | message(FATAL_ERROR "[pack_targets_and_files] No targets or files specified to pack") |
| 34 | endif() |
| 35 | |
| 36 | + if(ARG_TAR_ROOT_DIR) |
| 37 | + set(staging_subdir "${staging_dir}/${ARG_TAR_ROOT_DIR}") |
| 38 | + set(tar_src ${ARG_TAR_ROOT_DIR}) |
| 39 | + else() |
| 40 | + set(staging_subdir "${staging_dir}") |
| 41 | + set(tar_src ".") |
| 42 | + endif() |
| 43 | + |
| 44 | set(manifest_arg "") |
| 45 | if(ARG_MANIFEST) |
| 46 | if("${ARG_MANIFEST}" STREQUAL "") |
| ... | @@ -87,25 +105,25 @@ function(pack_targets_and_files) |
| 48 | if(IS_ABSOLUTE "${ARG_MANIFEST}") |
| 49 | message(FATAL_ERROR "[pack] MANIFEST must be relative (e.g., 'sha256sums.cfg')") |
| 50 | endif() |
| 51 | - set(manifest_arg -D_MANIFEST_FILE=${staging_dir}/${ARG_MANIFEST}) |
| 52 | + set(manifest_arg -D_MANIFEST_FILE=${staging_subdir}/${ARG_MANIFEST}) |
| 53 | endif() |
| 54 | |
| 55 | add_custom_command( |
| 56 | - OUTPUT ${staging_dir} |
| 57 | - COMMAND ${CMAKE_COMMAND} -E make_directory "${staging_dir}" |
| 58 | + OUTPUT ${staging_subdir} |
| 59 | + COMMAND ${CMAKE_COMMAND} -E make_directory "${staging_subdir}" |
| 60 | VERBATIM |
| 61 | ) |
| 62 | |
| 63 | add_custom_command( |
| 64 | OUTPUT "${ARG_OUTPUT}" |
| 65 | COMMAND ${CMAKE_COMMAND} |
| 66 | - -D _STAGING_DIR=${staging_dir} |
| 67 | + -D _STAGING_DIR=${staging_subdir} |
| 68 | ${manifest_arg} |
| 69 | -D "_ITEMS=$<JOIN:${src_items},;>" |
| 70 | -P "${_FUNC_CMAKE_DIR}/_pack_stage.cmake" |
| 71 | - COMMAND ${CMAKE_COMMAND} -E tar "czf" "${ARG_OUTPUT}" . |
| 72 | + COMMAND ${CMAKE_COMMAND} -E tar "czf" "${ARG_OUTPUT}" ${tar_src} |
| 73 | WORKING_DIRECTORY ${staging_dir} |
| 74 | - DEPENDS ${ARG_TARGETS} ${staging_dir} |
| 75 | + DEPENDS ${ARG_TARGETS} ${staging_subdir} |
| 76 | COMMENT "Packing with ${ARG_OUTPUT}" |
| 77 | VERBATIM |
| 78 | ) |
| ... | @@ -209,62 +227,6 @@ function(sign_file) |
| 80 | endif() |
| 81 | endfunction() |
| 82 | |
| 83 | -macro(replace_cur_major_minor_ver) |
| 84 | - string(REPLACE CUR_MAJOR_MINOR_VER "${CANN_VERSION_${CANN_VERSION_CURRENT_PACKAGE}_VERSION_MAJOR_MINOR}" depend "${depend}") |
| 85 | -endmacro() |
| 86 | - |
| 87 | -# 设置包和版本号 |
| 88 | -function(set_package name) |
| 89 | - cmake_parse_arguments(VERSION "" "VERSION" "" ${ARGN}) |
| 90 | - set(VERSION "${VERSION_VERSION}") |
| 91 | - if(NOT name) |
| 92 | - message(FATAL_ERROR "The name parameter is not set in set_package.") |
| 93 | - endif() |
| 94 | - if(NOT VERSION) |
| 95 | - message(FATAL_ERROR "The VERSION parameter is not set in set_package(${name}).") |
| 96 | - endif() |
| 97 | - string(REGEX MATCH "^([0-9]+\\.[0-9]+)" VERSION_MAJOR_MINOR "${VERSION}") |
| 98 | - list(APPEND CANN_VERSION_PACKAGES "${name}") |
| 99 | - set(CANN_VERSION_PACKAGES "${CANN_VERSION_PACKAGES}" PARENT_SCOPE) |
| 100 | - set(CANN_VERSION_CURRENT_PACKAGE "${name}" PARENT_SCOPE) |
| 101 | - set(CANN_VERSION_${name}_VERSION "${VERSION}" PARENT_SCOPE) |
| 102 | - set(CANN_VERSION_${name}_VERSION_MAJOR_MINOR "${VERSION_MAJOR_MINOR}" PARENT_SCOPE) |
| 103 | - set(CANN_VERSION_${name}_BUILD_DEPS PARENT_SCOPE) |
| 104 | - set(CANN_VERSION_${name}_RUN_DEPS PARENT_SCOPE) |
| 105 | -endfunction() |
| 106 | - |
| 107 | -# 设置构建依赖 |
| 108 | -function(set_build_dependencies pkg_name depend) |
| 109 | - if(NOT CANN_VERSION_CURRENT_PACKAGE) |
| 110 | - message(FATAL_ERROR "The set_package must be invoked first.") |
| 111 | - endif() |
| 112 | - if(NOT pkg_name) |
| 113 | - message(FATAL_ERROR "The pkg_name parameter is not set in set_build_dependencies.") |
| 114 | - endif() |
| 115 | - if(NOT depend) |
| 116 | - message(FATAL_ERROR "The depend parameter is not set in set_build_dependencies.") |
| 117 | - endif() |
| 118 | - replace_cur_major_minor_ver() |
| 119 | - list(APPEND CANN_VERSION_${CANN_VERSION_CURRENT_PACKAGE}_BUILD_DEPS "${pkg_name}" "${depend}") |
| 120 | - set(CANN_VERSION_${CANN_VERSION_CURRENT_PACKAGE}_BUILD_DEPS "${CANN_VERSION_${CANN_VERSION_CURRENT_PACKAGE}_BUILD_DEPS}" PARENT_SCOPE) |
| 121 | -endfunction() |
| 122 | - |
| 123 | -# 设置运行依赖 |
| 124 | -function(set_run_dependencies pkg_name depend) |
| 125 | - if(NOT CANN_VERSION_CURRENT_PACKAGE) |
| 126 | - message(FATAL_ERROR "The set_package must be invoked first.") |
| 127 | - endif() |
| 128 | - if(NOT pkg_name) |
| 129 | - message(FATAL_ERROR "The pkg_name parameter is not set in set_run_dependencies.") |
| 130 | - endif() |
| 131 | - if(NOT depend) |
| 132 | - message(FATAL_ERROR "The depend parameter is not set in set_run_dependencies.") |
| 133 | - endif() |
| 134 | - replace_cur_major_minor_ver() |
| 135 | - list(APPEND CANN_VERSION_${CANN_VERSION_CURRENT_PACKAGE}_RUN_DEPS "${pkg_name}" "${depend}") |
| 136 | - set(CANN_VERSION_${CANN_VERSION_CURRENT_PACKAGE}_RUN_DEPS "${CANN_VERSION_${CANN_VERSION_CURRENT_PACKAGE}_RUN_DEPS}" PARENT_SCOPE) |
| 137 | -endfunction() |
| 138 | - |
| 139 | # 检查构建依赖 |
| 140 | function(check_pkg_build_deps pkg_name) |
| 141 | execute_process( |
| 142 |
| ... | @@ -7,12 +7,19 @@ |
| 2 | # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. |
| 3 | # See LICENSE in the root of the software repository for the full text of the License. |
| 4 | # ----------------------------------------------------------------------------------------------------------- |
| 5 | +if(NOT DEFINED OUTPUT_PATH OR "${OUTPUT_PATH}" STREQUAL "") |
| 6 | + set(OUTPUT_PATH "${CMAKE_BINARY_DIR}") |
| 7 | +endif() |
| 8 | set(report_dir "${OUTPUT_PATH}/report/ut") |
| 9 | +if(NOT DEFINED LLT_KILL_TIME OR "${LLT_KILL_TIME}" STREQUAL "") |
| 10 | + set(LLT_KILL_TIME 1200) |
| 11 | +endif() |
| 12 | # 定义add_run_command函数 |
| 13 | function(add_run_command TARGET_NAME TASK_NUM) |
| 14 | add_custom_command( |
| 15 | TARGET ${TARGET_NAME} |
| 16 | POST_BUILD |
| 17 | + COMMAND ${CMAKE_COMMAND} -E make_directory ${report_dir} |
| 18 | COMMAND ${CMAKE_COMMAND} -E env LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH}:${CANN_3RD_LIB_PATH}/gtest/lib64/ ASAN_OPTIONS=detect_leaks=0 timeout -s SIGKILL ${LLT_KILL_TIME}s ./${TARGET_NAME} --gtest_output=xml:${report_dir}/${TARGET_NAME}.xml |
| 19 | COMMAND echo "Task number: ${TASK_NUM} timeout=${LLT_KILL_TIME}" |
| 20 | COMMENT "Run ops${TARGET_NAME} with task number ${TASK_NUM} ASAN(${ENABLE_ASAN})" |
| ... | @@ -28,4 +35,4 @@ function(run_llt_test) |
| 22 | if(RUN_LLT_TEST_TARGET AND RUN_LLT_TEST_TASK_NUM) |
| 23 | add_run_command(${RUN_LLT_TEST_TARGET} ${RUN_LLT_TEST_TASK_NUM}) |
| 24 | endif() |
| 25 | -endfunction() |
| 26 | \ No newline at end of file |
| 27 | +endfunction() |
| 28 |
| ... | @@ -11,13 +11,18 @@ |
| 2 | unset(hcomm_utils_FOUND CACHE) |
| 3 | unset(TLS_ADP_LIBRARY CACHE) |
| 4 | |
| 5 | -set(HCOMM_UTILS_VERSION "8.5.0-beta.1") |
| 6 | -set(HCOMM_UTILS_ARCH "${CMAKE_HOST_SYSTEM_PROCESSOR}") |
| 7 | +if (AARCH_MODE) |
| 8 | + set(HCOMM_UTILS_ARCH "${CMAKE_SYSTEM_PROCESSOR}") |
| 9 | +else() |
| 10 | + set(HCOMM_UTILS_ARCH "${CMAKE_HOST_SYSTEM_PROCESSOR}") |
| 11 | +endif() |
| 12 | + |
| 13 | +set(HCOMM_UTILS_VERSION "9.0.0") |
| 14 | set(HCOMM_UTILS_FILE "cann-hcomm-utils_${HCOMM_UTILS_VERSION}_linux-${HCOMM_UTILS_ARCH}.tar.gz") |
| 15 | -set(HCOMM_UTILS_URL "https://ascend.devcloud.huaweicloud.com/artifactory/cann-run/dependency/${HCOMM_UTILS_VERSION}/${HCOMM_UTILS_ARCH}/basic/${HCOMM_UTILS_FILE}") |
| 16 | +set(HCOMM_UTILS_URL "https://ascend-cann.obs.cn-north-4.myhuaweicloud.com/CANN/20260330_newest/${HCOMM_UTILS_FILE}") |
| 17 | set(HCOMM_UTILS_PKG_PATH ${CANN_3RD_LIB_PATH}/${HCOMM_UTILS_FILE}) |
| 18 | set(HCOMM_UTILS_INSTALL_PATH ${CANN_3RD_LIB_PATH}/hcomm_utils) |
| 19 | -set(INSTALL_LIBRARY_DIR hcomm/lib64) |
| 20 | +set(INSTALL_LIBRARY_DIR ${CMAKE_SYSTEM_PROCESSOR}-linux/lib64) |
| 21 | |
| 22 | # 查找目录下是否已经安装,避免重复编译安装 |
| 23 | message(STATUS "[ThirdParty] HCOMM_UTILS_INSTALL_PATH=${HCOMM_UTILS_INSTALL_PATH}") |
| ... | @@ -66,9 +71,9 @@ else() |
| 25 | # 忽略版本号,不校验哈希值 |
| 26 | set(HCOMM_UTILS_URL_HASH "") |
| 27 | elseif(HCOMM_UTILS_ARCH MATCHES "aarch64|ARM64|arm64") |
| 28 | - set(HCOMM_UTILS_URL_HASH "SHA256=b4c1eb4256268d83238b656e1b353142a5e4c4dbccf3662573ddc9a6d778f0a5") |
| 29 | + set(HCOMM_UTILS_URL_HASH "SHA256=bf36523b855842f7d391eeaaa23ed7ffa066deb591e531e8ec6fa0c35d422aff") |
| 30 | else() |
| 31 | - set(HCOMM_UTILS_URL_HASH "SHA256=a26dbc01269fb230927db0bd191a23dd07be2aa7925bf063ef978744f49415fd") |
| 32 | + set(HCOMM_UTILS_URL_HASH "SHA256=7b5eea6297b733922b0d6805f02190a6a5fe9f0e2ff969b76375875a7db57746") |
| 33 | endif() |
| 34 | |
| 35 | include(ExternalProject) |
| ... | @@ -98,9 +103,12 @@ set_target_properties(ascend_kms PROPERTIES |
| 37 | INTERFACE_INCLUDE_DIRECTORIES "${HCOMM_UTILS_INSTALL_PATH}/${PRODUCT_SIDE}/include" |
| 38 | IMPORTED_LOCATION "${HCOMM_UTILS_INSTALL_PATH}/${PRODUCT_SIDE}/lib/libascend_kms.so" |
| 39 | ) |
| 40 | -install(FILES ${HCOMM_UTILS_INSTALL_PATH}/${PRODUCT_SIDE}/lib/libascend_kms.so |
| 41 | - DESTINATION ${INSTALL_LIBRARY_DIR} OPTIONAL |
| 42 | -) |
| 43 | + |
| 44 | +if(${PRODUCT_SIDE} STREQUAL "device") |
| 45 | + install(FILES ${HCOMM_UTILS_INSTALL_PATH}/${PRODUCT_SIDE}/lib/libascend_kms.so |
| 46 | + DESTINATION ${INSTALL_LIBRARY_DIR} OPTIONAL |
| 47 | + ) |
| 48 | +endif() |
| 49 | |
| 50 | add_library(tls_adp SHARED IMPORTED) |
| 51 | add_dependencies(tls_adp hcomm_utils) |
| 52 |
| ... | @@ -69,9 +69,33 @@ configure_file( |
| 2 | ) |
| 3 | configure_file( |
| 4 | ${NN_VERSION_OUT_PUT} |
| 5 | - ${STAGING_DIR}/share/info/hcomm/ |
| 6 | + ${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/include/version/hcomm_version.h |
| 7 | COPYONLY |
| 8 | ) |
| 9 | + |
| 10 | +# 统一修正文件权限 |
| 11 | +if(EXISTS "${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/conf/path.cfg") |
| 12 | + execute_process(COMMAND chmod 440 "${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/conf/path.cfg") |
| 13 | +endif() |
| 14 | +if(EXISTS "${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/bin") |
| 15 | + execute_process(COMMAND find "${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/bin" -type f -exec chmod 550 {} +) |
| 16 | +endif() |
| 17 | +if(EXISTS "${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/lib64") |
| 18 | + execute_process(COMMAND find "${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/lib64" -type f -exec chmod 440 {} +) |
| 19 | +endif() |
| 20 | +if(EXISTS "${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/devlib") |
| 21 | + execute_process(COMMAND find "${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/devlib" -type f -exec chmod 440 {} +) |
| 22 | +endif() |
| 23 | +if(EXISTS "${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/include") |
| 24 | + execute_process(COMMAND find "${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/include" -type f -exec chmod 440 {} +) |
| 25 | +endif() |
| 26 | +if(EXISTS "${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/pkg_inc") |
| 27 | + execute_process(COMMAND find "${STAGING_DIR}/${CMAKE_SYSTEM_PROCESSOR}-linux/pkg_inc" -type f -exec chmod 440 {} +) |
| 28 | +endif() |
| 29 | +if(EXISTS "${STAGING_DIR}/opp/built-in/op_impl") |
| 30 | + execute_process(COMMAND find "${STAGING_DIR}/opp/built-in/op_impl" -type f -exec chmod 440 {} +) |
| 31 | +endif() |
| 32 | + |
| 33 | # makeself打包 |
| 34 | file(STRINGS ${CPACK_CMAKE_BINARY_DIR}/makeself.txt script_output) |
| 35 | string(REPLACE " " ";" makeself_param_string "${script_output}") |
| 36 |