选择分支名或 Tag 名,也可以输入一个 commit 的 ID,点击对比按钮。
| ... | @@ -2,7 +2,7 @@ |
| 2 | <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> |
| 3 | |
| 4 | ## 关联的Issue |
| 5 | -<!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> |
| 6 | +<!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> |
| 7 | <!-- 如果这个PR不涉及Issue,可填写"NA"。--> |
| 8 | |
| 9 | ## 测试 |
| 10 |
| ... | @@ -136,11 +136,10 @@ elseif(BUILD_OPEN_PROJECT) |
| 2 | OUTPUT_TARGET "generate_device_hccp_package" |
| 3 | OUTPUT "cann-hcomm-compat.tar.gz" |
| 4 | TARGETS hccp_service.bin |
| 5 | - FILES ${HCCP_TAR_DIR}/librs.so ${HCCP_TAR_DIR}/libra_adp.so ${HCCP_TAR_DIR}/libtls_adp.so ${HCCP_TAR_DIR}/libascend_kms.so |
| 6 | + 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 |
| 7 | MANIFEST "hccp_compat_bin_hash.cfg" |
| 8 | ) |
| 9 | add_dependencies(generate_device_hccp_package hccp_service.bin) |
| 10 | - |
| 11 | sign_file( |
| 12 | INPUT "cann-hcomm-compat.tar.gz" |
| 13 | CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/scripts/sign/hcomm_check_cfg.xml" |
| ... | @@ -149,13 +148,23 @@ elseif(BUILD_OPEN_PROJECT) |
| 15 | ) |
| 16 | add_dependencies(sign_cann_hcomm_compat generate_device_hccp_package) |
| 17 | |
| 18 | - add_custom_target(generate_device_hccd_package |
| 19 | - COMMAND cd ${HCCD_TAR_DIR} && ls && tar czf ../cann-hccd-compat.tar.gz lib64 |
| 20 | - DEPENDS hccd |
| 21 | - COMMENT "Creating cann-hccd-compat.tar.gz" |
| 22 | + set(HCCD_TAR_LIBS |
| 23 | + ${HCCD_TAR_DIR}/lib64/libascend_kms.so |
| 24 | + ${HCCD_TAR_DIR}/lib64/libhccd.so |
| 25 | + ${HCCD_TAR_DIR}/lib64/libra_hdc.so |
| 26 | + ${HCCD_TAR_DIR}/lib64/libra_peer.so |
| 27 | + ${HCCD_TAR_DIR}/lib64/libra.so |
| 28 | + ${HCCD_TAR_DIR}/lib64/librs.so |
| 29 | + ${HCCD_TAR_DIR}/lib64/libtls_adp.so |
| 30 | + ) |
| 31 | + pack_targets_and_files( |
| 32 | + OUTPUT_TARGET "generate_device_hccd_package" |
| 33 | + OUTPUT "cann-hccd-compat.tar.gz" |
| 34 | + FILES ${HCCD_TAR_LIBS} |
| 35 | + MANIFEST "bin_hash.cfg" |
| 36 | + TAR_ROOT_DIR "lib64" |
| 37 | ) |
| 38 | add_dependencies(generate_device_hccd_package hccd) |
| 39 | - |
| 40 | sign_file( |
| 41 | INPUT "cann-hccd-compat.tar.gz" |
| 42 | CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/scripts/sign/hcomm_check_cfg.xml" |
| ... | @@ -165,10 +174,16 @@ elseif(BUILD_OPEN_PROJECT) |
| 44 | add_dependencies(sign_cann_hccd_compat generate_device_hccd_package) |
| 45 | |
| 46 | if(KERNEL_MODE) |
| 47 | - add_custom_target(generate_device_aicpu_package |
| 48 | - COMMAND cd ${CCL_KERNEL_TAR_DIR} && ls && tar czf ../aicpu_hcomm.tar.gz aicpu_kernels_device |
| 49 | - DEPENDS ccl_kernel |
| 50 | - COMMENT "Creating aicpu_hcomm.tar.gz" |
| 51 | + set(CCL_KERNEL_TAR_LIBS |
| 52 | + ${CCL_KERNEL_TAR_DIR}/aicpu_kernels_device/libccl_kernel_plf.so |
| 53 | + ${CCL_KERNEL_TAR_DIR}/aicpu_kernels_device/libccl_kernel.so |
| 54 | + ) |
| 55 | + pack_targets_and_files( |
| 56 | + OUTPUT_TARGET "generate_device_aicpu_package" |
| 57 | + OUTPUT "aicpu_hcomm.tar.gz" |
| 58 | + FILES ${CCL_KERNEL_TAR_LIBS} |
| 59 | + MANIFEST "bin_hash.cfg" |
| 60 | + TAR_ROOT_DIR "aicpu_kernels_device" |
| 61 | ) |
| 62 | add_dependencies(generate_device_aicpu_package ccl_kernel) |
| 63 | sign_file( |
| ... | @@ -208,7 +223,15 @@ elseif(BUILD_OPEN_PROJECT) |
| 65 | install(FILES ${BUILD_DEVICE_DIR}/src/framework/libaicpu_custom.json |
| 66 | DESTINATION ${INSTALL_CCL_KERNEL_JSON_DIR} OPTIONAL |
| 67 | ) |
| 68 | + |
| 69 | + add_custom_target(install_ccl_kernel DEPENDS |
| 70 | + ${BUILD_DEVICE_DIR}/src/framework/libccl_kernel.so |
| 71 | + ) |
| 72 | + install(FILES ${BUILD_DEVICE_DIR}/src/framework/libccl_kernel.so |
| 73 | + DESTINATION ${INSTALL_LIBRARY_DIR} OPTIONAL |
| 74 | + ) |
| 75 | add_dependencies(install_tar hcomm) |
| 76 | + add_dependencies(install_ccl_kernel hcomm) |
| 77 | endif() |
| 78 | |
| 79 | install(FILES |
| ... | @@ -222,6 +245,7 @@ elseif(BUILD_OPEN_PROJECT) |
| 81 | pkg_inc/hccl/hccl_ex.h |
| 82 | pkg_inc/hccl/hccl_one_sided_services.h |
| 83 | pkg_inc/hccl/hcom.h |
| 84 | + pkg_inc/hccl/hccl_diag.h |
| 85 | pkg_inc/hccl/hcomm_diag.h |
| 86 | pkg_inc/hccl/dtype_common.h |
| 87 | pkg_inc/hccl/workflow.h |
| 88 |
| ... | @@ -1,22 +1,77 @@ |
| 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 | +- 问题修复:修复自己发现的或在Issue列表中的Bug,比如代码中的逻辑错误、内存泄漏或崩溃等问题; |
| 11 | +- 社区任务:领取HCCL社区公布的任务; |
| 12 | +- 性能优化:针对特定算子或特定架构的性能优化; |
| 13 | +- 新功能支持:增加平台功能、新算子或新业务场景的支持; |
| 14 | +- 文档优化:改进文档、注释或使用用例。 |
| 15 | + |
| 16 | +## 预备知识 |
| 17 | + |
| 18 | +### 编码规范 |
| 19 | + |
| 20 | +请遵从[CANN 社区编码规范](https://gitcode.com/cann/community/tree/master/contributor/coding-standards)。 |
| 21 | + |
| 22 | +### PR规范 |
| 23 | 1. 提交 PR 时,请按照 PR 模板仔细填写本次 PR 的业务背景、目的、方案等信息。 |
| 24 | 2. 若您的修改不是简单的 bug 修复,而是涉及到新增特性、新增接口、新增配置参数或者修改代码流程等,请务必先通过 Issue 进行方案讨论,以避免您的代码被拒绝合入。若您不确定本次修改是否可被归为“简单的 bug 修复”,亦可通过提交 Issue 进行方案讨论。 |
| 25 | |
| 26 | -## 贡献场景 |
| 27 | +## 贡献流程 |
| 28 | |
| 29 | -开发者贡献场景主要包括: |
| 30 | +### 问题修复或简单代码更改 |
| 31 | |
| 32 | -- 反馈 BUG |
| 33 | -- 建议特性 |
| 34 | -- 改进文档 |
| 35 | -- 修复问题 |
| 36 | -- 新增样例 |
| 37 | +1. 认领Issue,可在Issue中讨论修复方案; |
| 38 | +2. 发起PR,确保包含触发该Bug的回归测试; |
| 39 | +3. 对PR进行审核、批准并合入。 |
| 40 | + |
| 41 | +### 新功能或新特性 |
| 42 | + |
| 43 | +1. 记录Issue |
| 44 | + |
| 45 | +发起Requirement类型的Issue,按照模板描述您想贡献的新功能与使用场景,在社区发起讨论。 |
| 46 | + |
| 47 | +2. 需求评审 |
| 48 | + |
| 49 | +- 议题申报:在[SIG双周例会](https://etherpad-cann.meeting.osinfra.cn/p/sig-hccl)申报议题进行评审。 |
| 50 | +- 评审内容: |
| 51 | + - 需求的应用场景与业务价值; |
| 52 | + - 需求的紧迫性与重要性; |
| 53 | + - 是否符合社区当前的技术路线与愿景。 |
| 54 | + |
| 55 | +3. 系统方案评审 |
| 56 | + |
| 57 | +- 议题申报:在[SIG双周例会](https://etherpad-cann.meeting.osinfra.cn/p/sig-hccl)申报议题进行评审。 |
| 58 | +- 评审内容: |
| 59 | + - 技术可行性; |
| 60 | + - 系统整体架构的合理性; |
| 61 | + - 潜在的技术风险与问题识别。 |
| 62 | + |
| 63 | +4. 软件方案设计 |
| 64 | + |
| 65 | +您需要将系统方案转化为可执行的软件设计方案,同时包含完善的测试与验证方案,保障功能完善且不影响已有功能。 |
| 66 | + |
| 67 | +- 设计原则: |
| 68 | + - 需详细阐述模块划分、数据流向及关键逻辑,确保模块职责单一,模块间解耦; |
| 69 | + - 需要包含特性开关设计,确保新功能可以通过配置开关进行隔离,便于灰度发布与回滚。 |
| 70 | + |
| 71 | +5. 软件方案评审 |
| 72 | + |
| 73 | +在评审前,请确保在相应Requirement Issue中进行过充分讨论。 |
| 74 | + |
| 75 | +- 议题申报:在[SIG双周例会](https://etherpad-cann.meeting.osinfra.cn/p/sig-hccl)申报议题进行评审。 |
| 76 | + |
| 77 | +6. 提交PR |
| 78 | + |
| 79 | +开发者准备本地代码并提交PR;提交PR时,请按照 PR 模板仔细填写本次 PR 的业务背景、目的、方案等信息。 |
| 80 | + |
| 81 | +7. 社区版本特性规划 |
| 82 | + |
| 83 | +Roadmap规划时,根据新功能是否成熟、稳定以及优先级,决定是否加入到具体的社区版本。 |
| 84 | + |
| 85 | +*注:本文档有社区维护,如有变更建议,请在Issue中提出。* |
| 86 | |
| 87 | -## 编码规范 |
| 88 | |
| 89 | -若您需要贡献代码,请遵从[CANN 社区编码规范](https://gitcode.com/cann/community/tree/master/contributor/coding-standards)。 |
| 90 |
| ... | @@ -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 # 包间接口头文件 |
| 41 |
| ... | @@ -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 |
| ... | @@ -37,6 +37,7 @@ BUILD_CB_TEST="false" |
| 2 | |
| 3 | ENABLE_UT="off" |
| 4 | ENABLE_ST="off" |
| 5 | +ENABLE_GCOV="off" |
| 6 | CMAKE_BUILD_TYPE="Debug" |
| 7 | HCOMM_LIB_NAME="libhcomm.so" |
| 8 | INSTALL_XML_FILE="${CURRENT_DIR}/scripts/package/module/ascend/CommLib.xml" |
| ... | @@ -81,6 +82,13 @@ function clean() |
| 10 | mkdir -p ${BUILD_DIR} |
| 11 | } |
| 12 | |
| 13 | +function rmdir() |
| 14 | +{ |
| 15 | + if [ "${DO_NOT_CLEAN}" = "false" ] && [ $# -gt 0 ]; then |
| 16 | + rm -rf "$@" |
| 17 | + fi |
| 18 | +} |
| 19 | + |
| 20 | function cmake_config() |
| 21 | { |
| 22 | local extra_option="$1" |
| ... | @@ -103,7 +111,7 @@ function build_package(){ |
| 24 | function build_device(){ |
| 25 | cmake_config |
| 26 | log "Info: build_device" |
| 27 | - TARGET_LIST="hccp_service.bin rs ccl_kernel_plf ccl_kernel_plf_a ccl_kernel aicpu_custom_json aicpu_custom" |
| 28 | + TARGET_LIST="hccp_service.bin rs net_co ccl_kernel_plf ccl_kernel_plf_a ccl_kernel aicpu_custom_json aicpu_custom" |
| 29 | echo "TARGET_LIST=${TARGET_LIST}" |
| 30 | PKG_TARGET_LIST="generate_device_hccp_package generate_device_aicpu_package" |
| 31 | echo "PKG_TARGET_LIST=${PKG_TARGET_LIST}" |
| ... | @@ -181,6 +189,48 @@ function build_test() { |
| 33 | export LD_LIBRARY_PATH=${LIBRARY_DIR}${LD_LIBRARY_PATH} && export LD_PRELOAD=${PRELOAD} && export ASAN_OPTIONS=${ASAN_OPT} \ |
| 34 | && ${BUILD_DIR}/test/st/algorithm/testcase/executor_alltoall_A3_pipeline_testcase/executor_pipeline_hccl_test |
| 35 | fi |
| 36 | + |
| 37 | + if [ "${TEST_TASK_NAME}" == "legacy_aicpu_2d_testcase" ] || [ "${TEST_TASK_NAME}" == "legacy_all_testcase" ] || [ "$TEST" = "all" ];then |
| 38 | + build legacy_alg_aicpu_2d_testcase |
| 39 | + export LD_LIBRARY_PATH=${LIBRARY_DIR}${LD_LIBRARY_PATH} && export LD_PRELOAD=${PRELOAD} && export ASAN_OPTIONS=${ASAN_OPT} \ |
| 40 | + && ${BUILD_DIR}/test/legacy/st/algorithm/testcase/aicpu_2d_testcase/legacy_alg_aicpu_2d_testcase |
| 41 | + fi |
| 42 | + |
| 43 | + if [ "${TEST_TASK_NAME}" == "legacy_ccu_1d_hf16p_testcase" ] || [ "${TEST_TASK_NAME}" == "legacy_all_testcase" ] || [ "$TEST" = "all" ];then |
| 44 | + build legacy_alg_ccu_1d_hf16p_testcase |
| 45 | + export LD_LIBRARY_PATH=${LIBRARY_DIR}${LD_LIBRARY_PATH} && export LD_PRELOAD=${PRELOAD} && export ASAN_OPTIONS=${ASAN_OPT} \ |
| 46 | + && ${BUILD_DIR}/test/legacy/st/algorithm/testcase/ccu_1d_hf16p_testcase/legacy_alg_ccu_1d_hf16p_testcase |
| 47 | + fi |
| 48 | + |
| 49 | + if [ "${TEST_TASK_NAME}" == "legacy_ccu_1d_testcase_part1" ] || [ "${TEST_TASK_NAME}" == "legacy_all_testcase" ] || [ "$TEST" = "all" ];then |
| 50 | + build legacy_alg_ccu_1d_testcase_part1 |
| 51 | + export LD_LIBRARY_PATH=${LIBRARY_DIR}${LD_LIBRARY_PATH} && export LD_PRELOAD=${PRELOAD} && export ASAN_OPTIONS=${ASAN_OPT} \ |
| 52 | + && ${BUILD_DIR}/test/legacy/st/algorithm/testcase/ccu_1d_testcase_part1/legacy_alg_ccu_1d_testcase_part1 |
| 53 | + fi |
| 54 | + |
| 55 | + if [ "${TEST_TASK_NAME}" == "legacy_ccu_1d_testcase_part2" ] || [ "${TEST_TASK_NAME}" == "legacy_all_testcase" ] || [ "$TEST" = "all" ];then |
| 56 | + build legacy_alg_ccu_1d_testcase_part2 |
| 57 | + export LD_LIBRARY_PATH=${LIBRARY_DIR}${LD_LIBRARY_PATH} && export LD_PRELOAD=${PRELOAD} && export ASAN_OPTIONS=${ASAN_OPT} \ |
| 58 | + && ${BUILD_DIR}/test/legacy/st/algorithm/testcase/ccu_1d_testcase_part2/legacy_alg_ccu_1d_testcase_part2 |
| 59 | + fi |
| 60 | + |
| 61 | + if [ "${TEST_TASK_NAME}" == "legacy_alg_ccu_reduce" ] || [ "${TEST_TASK_NAME}" == "legacy_all_testcase" ] || [ "$TEST" = "all" ];then |
| 62 | + build legacy_alg_ccu_reduce |
| 63 | + export LD_LIBRARY_PATH=${LIBRARY_DIR}${LD_LIBRARY_PATH} && export LD_PRELOAD=${PRELOAD} && export ASAN_OPTIONS=${ASAN_OPT} \ |
| 64 | + && ${BUILD_DIR}/test/legacy/st/algorithm/testcase/ccu_reduce_testcase/legacy_alg_ccu_reduce |
| 65 | + fi |
| 66 | + |
| 67 | + if [ "${TEST_TASK_NAME}" == "legacy_function_ut_testcase" ] || [ "${TEST_TASK_NAME}" == "legacy_all_testcase" ] || [ "$TEST" = "all" ];then |
| 68 | + build legacy_alg_function_ut_testcase |
| 69 | + export LD_LIBRARY_PATH=${LIBRARY_DIR}${LD_LIBRARY_PATH} && export LD_PRELOAD=${PRELOAD} && export ASAN_OPTIONS=${ASAN_OPT} \ |
| 70 | + && ${BUILD_DIR}/test/legacy/st/algorithm/testcase/function_ut_testcase/legacy_alg_function_ut_testcase |
| 71 | + fi |
| 72 | + |
| 73 | + if [ "${TEST_TASK_NAME}" == "legacy_alg_testcase" ] || [ "${TEST_TASK_NAME}" == "legacy_all_testcase" ] || [ "$TEST" = "all" ];then |
| 74 | + build legacy_alg_testcase |
| 75 | + export LD_LIBRARY_PATH=${LIBRARY_DIR}${LD_LIBRARY_PATH} && export LD_PRELOAD=${PRELOAD} && export ASAN_OPTIONS=${ASAN_OPT} \ |
| 76 | + && ${BUILD_DIR}/test/legacy/st/algorithm/testcase/legacy_alg_testcase/legacy_alg_testcase |
| 77 | + fi |
| 78 | } |
| 79 | |
| 80 | function build_kernel() { |
| ... | @@ -210,7 +260,7 @@ function build_ut() { |
| 82 | -DCMAKE_INSTALL_PREFIX=${BUILD_OUTPUT_DIR} \ |
| 83 | -DASCEND_INSTALL_PATH=${ASCEND_INSTALL_PATH} \ |
| 84 | -DCANN_3RD_LIB_PATH=${CANN_3RD_LIB_PATH} \ |
| 85 | - -DENABLE_COV=${ENABLE_COV} \ |
| 86 | + -DENABLE_GCOV=${ENABLE_GCOV} \ |
| 87 | -DENABLE_TEST=${ENABLE_TEST} \ |
| 88 | -DENABLE_UT=${ENABLE_UT} \ |
| 89 | -DOUTPUT_PATH=${OUTPUT_PATH} \ |
| ... | @@ -240,16 +290,14 @@ function build_ut() { |
| 91 | } |
| 92 | |
| 93 | function make_ut_gov() { |
| 94 | - if [[ "X$ENABLE_UT" = "Xon" || "X$ENABLE_COV" = "Xon" ]]; then |
| 95 | + if [[ "X$ENABLE_UT" = "Xon" && "X$ENABLE_GCOV" = "Xon" ]]; then |
| 96 | echo "Generated coverage statistics, please wait..." |
| 97 | cd ${CURRENT_DIR} |
| 98 | rm -rf ${CURRENT_DIR}/cov |
| 99 | mkdir -p ${CURRENT_DIR}/cov |
| 100 | - lcov -c -d ${BUILD_DIR}/test/ut/ -o cov/all.info |
| 101 | - lcov -r cov/all.info */src/platform/hccp/external_depends/* -o cov/tmp.info |
| 102 | - lcov -e cov/all.info */src/algorithm/* */src/common/* */src/hccd/* */src/legacy/* */src/platform/* */src/pub_inc/* -o cov/coverage.info |
| 103 | - # LCOV_COMMAND="lcov -r cov/tmp.info ${CURRENT_DIR}src/* -o cov/coverage.info" && ${LCOV_COMMAND} |
| 104 | - # lcov -r cov/tmp.info "/usr/*" "${OUTPUT_PATH}/*" "${BASEPATH}/test/*" "${ASCEND_INSTALL_PATH}/*" "${CANN_3RD_LIB_PATH}/*" -o cov/coverage.info |
| 105 | + lcov -c -d ${BUILD_DIR}/test/ut/ -d ${BUILD_DIR}/test/legacy/ut/ -o cov/coverage.info |
| 106 | + lcov -r cov/coverage.info */src/platform/hccp/external_depends/* -o cov/coverage.info |
| 107 | + lcov -e cov/coverage.info */src/algorithm/* */src/common/* */src/hccd/* */src/legacy/* */src/framework/* */src/platform/* */src/pub_inc/* -o cov/coverage.info |
| 108 | |
| 109 | cd ${CURRENT_DIR}/cov |
| 110 | genhtml coverage.info |
| ... | @@ -423,6 +471,46 @@ while [[ $# -gt 0 ]]; do |
| 112 | TEST_TASK_NAME="executor_pipeline_hccl_test" |
| 113 | shift |
| 114 | ;; |
| 115 | + --legacy_all_testcase) |
| 116 | + TEST="partial" |
| 117 | + TEST_TASK_NAME="legacy_all_testcase" |
| 118 | + shift |
| 119 | + ;; |
| 120 | + --legacy_aicpu_2d_testcase) |
| 121 | + TEST="partial" |
| 122 | + TEST_TASK_NAME="legacy_aicpu_2d_testcase" |
| 123 | + shift |
| 124 | + ;; |
| 125 | + --legacy_ccu_1d_hf16p_testcase) |
| 126 | + TEST="partial" |
| 127 | + TEST_TASK_NAME="legacy_ccu_1d_hf16p_testcase" |
| 128 | + shift |
| 129 | + ;; |
| 130 | + --legacy_ccu_1d_testcase_part1) |
| 131 | + TEST="partial" |
| 132 | + TEST_TASK_NAME="legacy_ccu_1d_testcase_part1" |
| 133 | + shift |
| 134 | + ;; |
| 135 | + --legacy_ccu_1d_testcase_part2) |
| 136 | + TEST="partial" |
| 137 | + TEST_TASK_NAME="legacy_ccu_1d_testcase_part2" |
| 138 | + shift |
| 139 | + ;; |
| 140 | + --legacy_alg_ccu_reduce) |
| 141 | + TEST="partial" |
| 142 | + TEST_TASK_NAME="legacy_alg_ccu_reduce" |
| 143 | + shift |
| 144 | + ;; |
| 145 | + --legacy_function_ut_testcase) |
| 146 | + TEST="partial" |
| 147 | + TEST_TASK_NAME="legacy_function_ut_testcase" |
| 148 | + shift |
| 149 | + ;; |
| 150 | + --legacy_alg_testcase) |
| 151 | + TEST="partial" |
| 152 | + TEST_TASK_NAME="legacy_alg_testcase" |
| 153 | + shift |
| 154 | + ;; |
| 155 | --aicpu) # 新增选项,用于只编译 ccl_kernel.so |
| 156 | KERNEL="true" |
| 157 | shift |
| ... | @@ -440,6 +528,7 @@ while [[ $# -gt 0 ]]; do |
| 159 | shift |
| 160 | ;; |
| 161 | --cov) |
| 162 | + ENABLE_GCOV="on" |
| 163 | COV="true" |
| 164 | shift |
| 165 | ;; |
| ... | @@ -542,7 +631,7 @@ cd ${BUILD_DIR} |
| 167 | |
| 168 | if [ "${ENABLE_UT}" == "on" ]; then |
| 169 | build_ut |
| 170 | - # make_ut_gov |
| 171 | + make_ut_gov |
| 172 | elif [ -n "${TEST}" ];then |
| 173 | build_test |
| 174 | elif [ "${KERNEL}" == "true" ]; then |
| ... | @@ -577,7 +666,7 @@ elif [ "${FULL_MODE}" == "true" ]; then |
| 176 | cd .. & cd ${BUILD_DIR} |
| 177 | CUSTOM_OPTION="${CURRENT_CUSTOM_OPTION} -DDEVICE_MODE=OFF -DPRODUCT=ascend -DPRODUCT_SIDE=host -DUSE_ALOG=1" |
| 178 | build_package |
| 179 | - rm -rf ${BUILD_DEVICE_DIR} ${BUILD_HCCD_DIR} |
| 180 | + rmdir ${BUILD_DEVICE_DIR} ${BUILD_HCCD_DIR} |
| 181 | else |
| 182 | cd .. |
| 183 | mkdir -p ${BUILD_DEVICE_DIR} |
| ... | @@ -588,5 +677,5 @@ else |
| 185 | cd .. & cd ${BUILD_DIR} |
| 186 | CUSTOM_OPTION="${CURRENT_CUSTOM_OPTION} -DDEVICE_MODE=OFF -DPRODUCT=ascend -DPRODUCT_SIDE=host -DUSE_ALOG=1" |
| 187 | build_package |
| 188 | - rm -rf ${BUILD_DEVICE_DIR} |
| 189 | + rmdir ${BUILD_DEVICE_DIR} |
| 190 | fi |
| 191 |
| ... | @@ -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 |
| ... | @@ -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 | ) |
| 79 |
| ... | @@ -98,9 +98,12 @@ set_target_properties(ascend_kms PROPERTIES |
| 2 | INTERFACE_INCLUDE_DIRECTORIES "${HCOMM_UTILS_INSTALL_PATH}/${PRODUCT_SIDE}/include" |
| 3 | IMPORTED_LOCATION "${HCOMM_UTILS_INSTALL_PATH}/${PRODUCT_SIDE}/lib/libascend_kms.so" |
| 4 | ) |
| 5 | -install(FILES ${HCOMM_UTILS_INSTALL_PATH}/${PRODUCT_SIDE}/lib/libascend_kms.so |
| 6 | - DESTINATION ${INSTALL_LIBRARY_DIR} OPTIONAL |
| 7 | -) |
| 8 | + |
| 9 | +if(${PRODUCT_SIDE} STREQUAL "device") |
| 10 | + install(FILES ${HCOMM_UTILS_INSTALL_PATH}/${PRODUCT_SIDE}/lib/libascend_kms.so |
| 11 | + DESTINATION ${INSTALL_LIBRARY_DIR} OPTIONAL |
| 12 | + ) |
| 13 | +endif() |
| 14 | |
| 15 | add_library(tls_adp SHARED IMPORTED) |
| 16 | add_dependencies(tls_adp hcomm_utils) |
| 17 |
| ... | @@ -1,8 +1,8 @@ |
| 2 | # ---------------------------------------------------------------------------- |
| 3 | -# This program is free software, you can redistribute it and/or modify it. |
| 4 | # Copyright (c) 2025 Huawei Technologies Co., Ltd. |
| 5 | +# This program is free software, you can redistribute it and/or modify it under the terms and conditions of |
| 6 | # This file is a part of the CANN Open Software. |
| 7 | -# Licensed under CANN Open Software License Agreement Version 2.0 (the "License"). |
| 8 | +# CANN Open Software License Agreement Version 2.0 (the "License"). |
| 9 | # Please refer to the License for details. You may not use this file except in compliance with the License. |
| 10 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING |
| 11 | # BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. See LICENSE in the root of |
| ... | @@ -24,16 +24,16 @@ else() |
| 13 | # 下载 |
| 14 | message(STATUS "[ThirdParty] Downloading ${ABSEIL_NAME} from ${ABSEIL_URL}") |
| 15 | set(ABSEIL_PROJECT_URL ${ABSEIL_URL}) |
| 16 | - |
| 17 | - include(ExternalProject) |
| 18 | - ExternalProject_Add(third_party_abseil_cpp |
| 19 | - URL ${ABSEIL_PROJECT_URL} |
| 20 | - URL_HASH SHA256=16242f394245627e508ec6bb296b433c90f8d914f73b9c026fddb905e27276e8 |
| 21 | - DOWNLOAD_DIR ${CANN_3RD_LIB_PATH} |
| 22 | - DOWNLOAD_NO_PROGRESS TRUE |
| 23 | - DOWNLOAD_NO_EXTRACT TRUE # 仅下载,不解压 |
| 24 | - CONFIGURE_COMMAND "" |
| 25 | - BUILD_COMMAND "" |
| 26 | - INSTALL_COMMAND "" |
| 27 | - ) |
| 28 | endif() |
| 29 | + |
| 30 | +include(ExternalProject) |
| 31 | +ExternalProject_Add(third_party_abseil_cpp |
| 32 | + URL ${ABSEIL_PROJECT_URL} |
| 33 | + URL_HASH SHA256=16242f394245627e508ec6bb296b433c90f8d914f73b9c026fddb905e27276e8 |
| 34 | + DOWNLOAD_DIR ${CANN_3RD_LIB_PATH} |
| 35 | + DOWNLOAD_NO_PROGRESS TRUE |
| 36 | + DOWNLOAD_NO_EXTRACT TRUE # 仅下载,不解压 |
| 37 | + CONFIGURE_COMMAND "" |
| 38 | + BUILD_COMMAND "" |
| 39 | + INSTALL_COMMAND "" |
| 40 | +) |
| 41 |
| ... | @@ -14,9 +14,13 @@ set(BOOST_NAME "boost") |
| 2 | set(BOOST_FILE "boost_1_87_0.tar.gz") |
| 3 | set(BOOST_URL "https://gitcode.com/cann-src-third-party/boost/releases/download/v1.87.0/${BOOST_FILE}") |
| 4 | set(BOOST_PKG_PATH ${CANN_3RD_LIB_PATH}/${BOOST_FILE}) |
| 5 | -set(BOOST_SRC_PATH ${PROJECT_SOURCE_DIR}/build/third_party/boost) |
| 6 | +set(BOOST_SRC_PATH ${CANN_3RD_LIB_PATH}/boost) |
| 7 | |
| 8 | -if(NOT EXISTS ${BOOST_SRC_PATH}/boost/config.hpp) |
| 9 | +if(EXISTS ${BOOST_SRC_PATH}/boost/config.hpp) |
| 10 | + # 离线编译场景,优先使用已解压的源码目录 |
| 11 | + message(STATUS "[ThirdParty] Found boost source: ${BOOST_SRC_PATH}") |
| 12 | + add_custom_target(third_party_boost) |
| 13 | +else() |
| 14 | if(EXISTS ${BOOST_PKG_PATH}) |
| 15 | # 离线编译场景,优先使用已下载的包 |
| 16 | message(STATUS "[ThirdParty] Found local boost package: ${BOOST_PKG_PATH}") |
| 17 |
| ... | @@ -1,8 +1,8 @@ |
| 2 | # ---------------------------------------------------------------------------- |
| 3 | -# This program is free software, you can redistribute it and/or modify it. |
| 4 | # Copyright (c) 2025 Huawei Technologies Co., Ltd. |
| 5 | +# This program is free software, you can redistribute it and/or modify it under the terms and conditions of |
| 6 | # This file is a part of the CANN Open Software. |
| 7 | -# Licensed under CANN Open Software License Agreement Version 2.0 (the "License"). |
| 8 | +# CANN Open Software License Agreement Version 2.0 (the "License"). |
| 9 | # Please refer to the License for details. You may not use this file except in compliance with the License. |
| 10 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING |
| 11 | # BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. See LICENSE in the root of |
| 12 |
| ... | @@ -23,6 +23,9 @@ set(MOCKCPP_PATCH_FILE "mockcpp-2.7_py3.patch") |
| 2 | set(MOCKCPP_PATCH_URL "https://gitcode.com/cann-src-third-party/mockcpp/releases/download/v2.7-h4/${MOCKCPP_PATCH_FILE}") |
| 3 | set(MOCKCPP_PATCH_PATH ${CANN_3RD_LIB_PATH}/${MOCKCPP_PATCH_FILE}) |
| 4 | |
| 5 | +# mockcpp 需要使用 boost 库 |
| 6 | +include(${CMAKE_CURRENT_LIST_DIR}/boost.cmake) |
| 7 | + |
| 8 | # 查找目录下是否已经安装,避免重复编译安装 |
| 9 | message(STATUS "[ThirdParty] MOCKCPP_INSTALL_PATH=${MOCKCPP_INSTALL_PATH}") |
| 10 | find_path(MOCKCPP_INCLUDE |
| ... | @@ -54,9 +57,6 @@ message(STATUS "[ThirdParty] Found MockCpp: ${mockcpp_FOUND}") |
| 12 | if(mockcpp_FOUND AND NOT FORCE_REBUILD_CANN_3RD) |
| 13 | message(STATUS "[ThirdParty] MockCpp found in ${MOCKCPP_INSTALL_PATH}, and not force rebuild cann third_party") |
| 14 | else() |
| 15 | - # 编译 mockcpp 需要 boost 库 |
| 16 | - include(${CMAKE_CURRENT_LIST_DIR}/boost.cmake) |
| 17 | - |
| 18 | # mockcpp 补丁 |
| 19 | if(EXISTS ${MOCKCPP_PATCH_PATH}) |
| 20 | message(STATUS "[ThirdParty] Found local mockcpp patch package: ${MOCKCPP_PATCH_PATH}") |
| ... | @@ -131,5 +131,8 @@ endif() |
| 22 | |
| 23 | set_target_properties(mockcpp PROPERTIES |
| 24 | IMPORTED_LOCATION ${MOCKCPP_INSTALL_PATH}/lib/libmockcpp.a |
| 25 | - INTERFACE_INCLUDE_DIRECTORIES ${MOCKCPP_INSTALL_PATH}/include |
| 26 | +) |
| 27 | +target_include_directories(mockcpp INTERFACE |
| 28 | + ${MOCKCPP_INSTALL_PATH}/include |
| 29 | + ${BOOST_SRC_PATH} |
| 30 | ) |
| 31 |
| ... | @@ -26,7 +26,7 @@ set(OPENSSL_FILE "openssl-openssl-3.0.9.tar.gz") |
| 2 | set(OPENSSL_URL "https://gitcode.com/cann-src-third-party/openssl/releases/download/openssl-3.0.9/${OPENSSL_FILE}") |
| 3 | set(OPENSSL_PKG_PATH ${CANN_3RD_LIB_PATH}/${OPENSSL_FILE}) |
| 4 | set(OPENSSL_INSTALL_PATH ${CANN_3RD_LIB_PATH}/openssl-${PRODUCT_SIDE}) |
| 5 | -set(OPENSSL_SRC_PATH ${PROJECT_SOURCE_DIR}/build/third_party/openssl-${PRODUCT_SIDE}) |
| 6 | +set(OPENSSL_SRC_PATH ${PROJECT_SOURCE_DIR}/openssl-${PRODUCT_SIDE}-src) |
| 7 | set(OPENSSL_INCLUDE_DIR |
| 8 | ${OPENSSL_INSTALL_PATH}/include |
| 9 | ${OPENSSL_SRC_PATH}/include |
| ... | @@ -34,14 +34,14 @@ set(OPENSSL_INCLUDE_DIR |
| 11 | |
| 12 | # 查找目录下是否已经安装,避免重复编译安装 |
| 13 | message(STATUS "[ThirdParty] OPENSSL_INSTALL_PATH=${OPENSSL_INSTALL_PATH}") |
| 14 | -find_library(CRYPTO_INCLUDE |
| 15 | +find_path(CRYPTO_INCLUDE |
| 16 | NAMES crypto/x509.h |
| 17 | PATH_SUFFIXES include |
| 18 | NO_CMAKE_SYSTEM_PATH |
| 19 | NO_CMAKE_FIND_ROOT_PATH |
| 20 | PATHS ${OPENSSL_INSTALL_PATH} |
| 21 | ) |
| 22 | -find_library(SSL_INCLUDE |
| 23 | +find_path(SSL_INCLUDE |
| 24 | NAMES openssl/ssl.h |
| 25 | PATH_SUFFIXES include |
| 26 | NO_CMAKE_SYSTEM_PATH |
| 27 |
| ... | @@ -1,8 +1,8 @@ |
| 2 | # ---------------------------------------------------------------------------- |
| 3 | -# This program is free software, you can redistribute it and/or modify it. |
| 4 | # Copyright (c) 2025 Huawei Technologies Co., Ltd. |
| 5 | +# This program is free software, you can redistribute it and/or modify it under the terms and conditions of |
| 6 | # This file is a part of the CANN Open Software. |
| 7 | -# Licensed under CANN Open Software License Agreement Version 2.0 (the "License"). |
| 8 | +# CANN Open Software License Agreement Version 2.0 (the "License"). |
| 9 | # Please refer to the License for details. You may not use this file except in compliance with the License. |
| 10 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING |
| 11 | # BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. See LICENSE in the root of |
| ... | @@ -77,6 +77,8 @@ else() |
| 13 | |
| 14 | set(PROTOBUF_OPTS |
| 15 | -DCMAKE_CXX_FLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" |
| 16 | + -DCMAKE_CXX_STANDARD=14 |
| 17 | + -DCMAKE_CXX_STANDARD_REQUIRED=ON |
| 18 | -DCMAKE_BUILD_TYPE=Release |
| 19 | -DCMAKE_INSTALL_PREFIX=${PROTOBUF_INSTALL_PATH} |
| 20 | -DCMAKE_INSTALL_LIBDIR=lib64 |
| 21 |
| ... | @@ -8,36 +8,94 @@ |
| 2 | # See LICENSE in the root of the software repository for the full text of the License. |
| 3 | # ------------------------------------------------------------------------------------------------------------ |
| 4 | |
| 5 | +function(download_file URL FILE_PATH EXPECTED_HASH) |
| 6 | + if(NOT EXISTS "${FILE_PATH}") |
| 7 | + get_filename_component(FILENAME "${FILE_PATH}" NAME) |
| 8 | + message(STATUS "Downloading ${FILENAME}...") |
| 9 | + |
| 10 | + file(DOWNLOAD |
| 11 | + ${URL} |
| 12 | + "${FILE_PATH}" |
| 13 | + EXPECTED_HASH ${EXPECTED_HASH} |
| 14 | + STATUS DOWNLOAD_STATUS |
| 15 | + SHOW_PROGRESS |
| 16 | + ) |
| 17 | + |
| 18 | + list(GET DOWNLOAD_STATUS 0 STATUS_CODE) |
| 19 | + if(NOT STATUS_CODE EQUAL 0) |
| 20 | + list(GET DOWNLOAD_STATUS 1 ERROR_MSG) |
| 21 | + file(REMOVE "${FILE_PATH}") |
| 22 | + message(FATAL_ERROR "Failed to download ${FILENAME}: ${ERROR_MSG}") |
| 23 | + endif() |
| 24 | + else() |
| 25 | + get_filename_component(FILENAME "${FILE_PATH}" NAME) |
| 26 | + message(STATUS "${FILENAME} already exists, skipping download") |
| 27 | + endif() |
| 28 | +endfunction() |
| 29 | + |
| 30 | message("Build third party library rdma-core") |
| 31 | set(RDMA_CORE_NAME "rdma-core") |
| 32 | -set(ROOT_BUILD_PATH "${CMAKE_BINARY_DIR}") |
| 33 | +set(RDMA_CORE_VERSION "42.7") |
| 34 | +set(RDMA_CORE_URL "https://gitcode.com/cann-src-third-party/rdma-core/releases/download/v42.7-h1/rdma-core-42.7.tar.gz") |
| 35 | +set(RDMA_CORE_PATCH_URL "https://gitcode.com/cann-src-third-party/rdma-core/releases/download/v42.7-h1/rdma-core-42.7.patch") |
| 36 | +set(ROOT_BUILD_PATH "${CMAKE_SOURCE_DIR}/third_party") |
| 37 | set(RDMA_CORE_SEARCH_PATHS "${CANN_3RD_LIB_PATH}/${RDMA_CORE_NAME}") |
| 38 | set(RDMA_CORE_ROOT_DIR ${ROOT_BUILD_PATH}/rdma-core) |
| 39 | -set(RDMA_CORE_SRC_DIR ${ROOT_BUILD_PATH}/rdma-core-42.7) |
| 40 | -set(RDMA_CORE_BUILD_DIR ${ROOT_BUILD_PATH}/rdma-core/build) |
| 41 | +set(RDMA_CORE_ARCHIVE rdma-core-${RDMA_CORE_VERSION}.tar.gz) |
| 42 | +set(RDMA_CORE_PATCH rdma-core-${RDMA_CORE_VERSION}.patch) |
| 43 | +set(RDMA_CORE_ARCHIVE_PATH "${ROOT_BUILD_PATH}/${RDMA_CORE_ARCHIVE}") |
| 44 | +set(RDMA_CORE_PATCH_PATH "${ROOT_BUILD_PATH}/${RDMA_CORE_PATCH}") |
| 45 | +set(RDMA_CORE_SRC_DIR "${ROOT_BUILD_PATH}/rdma-core-${RDMA_CORE_VERSION}") |
| 46 | +set(RDMA_CORE_BUILD_DIR "${ROOT_BUILD_PATH}/rdma-core-build") |
| 47 | +file(MAKE_DIRECTORY "${ROOT_BUILD_PATH}") |
| 48 | + |
| 49 | if(POLICY CMP0135) |
| 50 | cmake_policy(SET CMP0135 NEW) |
| 51 | endif() |
| 52 | |
| 53 | +if(DEFINED CANN_3RD_LIB_PATH AND CANN_3RD_LIB_PATH) |
| 54 | + set(RDMA_CORE_ARCHIVE_PATH "${CANN_3RD_LIB_PATH}/${RDMA_CORE_ARCHIVE}") |
| 55 | + set(RDMA_CORE_PATCH_PATH "${CANN_3RD_LIB_PATH}/${RDMA_CORE_PATCH}") |
| 56 | +endif() |
| 57 | if(EXISTS ${RDMA_CORE_SEARCH_PATHS}) |
| 58 | set(RDMA_CORE_SRC_DIR ${RDMA_CORE_SEARCH_PATHS}) |
| 59 | message(STATUS "Successfully copied ${RDMA_CORE_SEARCH_PATHS} to ${ROOT_BUILD_PATH}.") |
| 60 | else() |
| 61 | - set(RDMA_CORE_URL "https://gitcode.com/cann-src-third-party/rdma-core/releases/download/v42.7-h1/rdma-core-42.7.tar.gz") |
| 62 | - set(RDMA_CORE_PATCH_URL "https://gitcode.com/cann-src-third-party/rdma-core/releases/download/v42.7-h1/rdma-core-42.7.patch") |
| 63 | - file(DOWNLOAD ${RDMA_CORE_PATCH_URL} ${ROOT_BUILD_PATH}/rdma-core-42.7.patch) |
| 64 | - file(DOWNLOAD ${RDMA_CORE_URL} ${ROOT_BUILD_PATH}/rdma-core-42.7.tar.gz |
| 65 | - EXPECTED_HASH SHA256=aa935de1fcd07c42f7237b0284b5697b1ace2a64f2bcfca3893185bc91b8c74d |
| 66 | - ) |
| 67 | - execute_process( |
| 68 | - COMMAND tar -zxf rdma-core-42.7.tar.gz |
| 69 | - WORKING_DIRECTORY ${ROOT_BUILD_PATH} |
| 70 | - ) |
| 71 | - execute_process( |
| 72 | - COMMAND patch -p1 -i ${ROOT_BUILD_PATH}/rdma-core-42.7.patch |
| 73 | - WORKING_DIRECTORY ${RDMA_CORE_SRC_DIR} |
| 74 | - ) |
| 75 | - message(STATUS "downloading ${RDMA_CORE_URL} to ${RDMA_CORE_ROOT_DIR}") |
| 76 | + if(NOT EXISTS "${RDMA_CORE_SRC_DIR}/CMakeLists.txt") |
| 77 | + message(STATUS "rdma-core source not found, starting download and setup...") |
| 78 | + |
| 79 | + # -------------------------- downloading src -------------------------- |
| 80 | + download_file(${RDMA_CORE_URL} ${RDMA_CORE_ARCHIVE_PATH} SHA256=aa935de1fcd07c42f7237b0284b5697b1ace2a64f2bcfca3893185bc91b8c74d) |
| 81 | + |
| 82 | + # -------------------------- dowloading patch -------------------------- |
| 83 | + download_file(${RDMA_CORE_PATCH_URL} ${RDMA_CORE_PATCH_PATH} SHA256=169bc1707624780d7efecbc9458781efec1961d7ff905aa367bd2b6b78c13d46) |
| 84 | + |
| 85 | + # -------------------------- Extracting -------------------------- |
| 86 | + message(STATUS "Extracting rdma-core...") |
| 87 | + execute_process( |
| 88 | + COMMAND tar -zxf "${RDMA_CORE_ARCHIVE_PATH}" -C "${ROOT_BUILD_PATH}" |
| 89 | + WORKING_DIRECTORY "${ROOT_BUILD_PATH}" |
| 90 | + RESULT_VARIABLE TAR_RESULT |
| 91 | + ) |
| 92 | + |
| 93 | + if(NOT TAR_RESULT EQUAL 0) |
| 94 | + message(FATAL_ERROR "Failed to extract rdma-core archive") |
| 95 | + endif() |
| 96 | + |
| 97 | + # -------------------------- patching -------------------------- |
| 98 | + message(STATUS "Applying rdma-core patch...") |
| 99 | + execute_process( |
| 100 | + COMMAND patch -p1 -i "${RDMA_CORE_PATCH_PATH}" |
| 101 | + WORKING_DIRECTORY "${RDMA_CORE_SRC_DIR}" |
| 102 | + RESULT_VARIABLE PATCH_RESULT |
| 103 | + ) |
| 104 | + if(NOT PATCH_RESULT EQUAL 0) |
| 105 | + message(FATAL_ERROR "Failed to apply rdma-core patch") |
| 106 | + endif() |
| 107 | + |
| 108 | + else() |
| 109 | + message(STATUS "rdma-core source already prepared, skipping download/extract/patch") |
| 110 | + endif() |
| 111 | endif() |
| 112 | execute_process( |
| 113 | COMMAND ${CMAKE_COMMAND} |
| 114 |
| ... | @@ -17,7 +17,7 @@ set(URMA_SRC_DIR ${URMA_BUILD_PATH}/urma) |
| 2 | set(URMA_SRC_DIRS |
| 3 | "${URMA_SEARCH_PATHS}/kernelspace/urma/code/lib/urma/include" |
| 4 | "${URMA_SEARCH_PATHS}/kernelspace/urma/code/include" |
| 5 | - "${URMA_SEARCH_PATHS}/userspace/include/external/udma" |
| 6 | + "${URMA_SEARCH_PATHS}/userspace/udma/src/urma/hw/udma/include" |
| 7 | ) |
| 8 | set(URMA_INCLUDE_DIR ${URMA_BUILD_PATH}/urma) |
| 9 | file(MAKE_DIRECTORY "${URMA_INCLUDE_DIR}") |
| 10 |
| ... | @@ -2,7 +2,10 @@ |
| 2 | |
| 3 | ## 文档 |
| 4 | |
| 5 | -- [集合通信库用户指南](https://hiascend.com/document/redirect/CannCommunityHcclUg):介绍HCCL基本概念、如何使用HCCL API进行集合通信功能的开发,如何开发通信算子,以及故障处理与常见配置。 |
| 6 | +- [集合通信库用户指南](https://cann-doc.obs.cn-north-4.myhuaweicloud.com/hccl/HCCL%E9%9B%86%E5%90%88%E9%80%9A%E4%BF%A1%E5%BA%93%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97.pdf):介绍HCCL基本概念、如何使用HCCL API进行集合通信功能的开发,以及故障处理与常见配置。 |
| 7 | +- [通信算子开发指南](https://cann-doc.obs.cn-north-4.myhuaweicloud.com/hccl/%E9%80%9A%E4%BF%A1%E7%AE%97%E5%AD%90%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97.pdf):指导开发者如何基于通信编程API开发通信算子。 |
| 8 | + |
| 9 | + > 注意:当前通信算子开发功能处于试用阶段,后续版本可能会存在变更。 |
| 10 | |
| 11 | ## 技术文章 |
| 12 | |
| 13 |