已合并
[build] unified encoding, line breaks, and license header format #4522
ouyangcaike创建于 8月10日
[build] unified encoding, line breaks, and license header format #4522
已合并
共 230 个文件变更+26972-25532
| @@ -1,16 +1,16 @@ | |||
| 1 | -*.png filter=lfs diff=lfs merge=lfs -text | 1 | +# ----------------------------------------------------------------------------------------------------------- |
| 2 | -*.gif filter=lfs diff=lfs merge=lfs -text | 2 | +# Copyright (c) 2026 Huawei Technologies Co., Ltd. |
| 3 | -# 强制源码文件使用 LF,防止 Windows autocrlf 转换为 CRLF | 3 | +# This program is free software, you can redistribute it and/or modify it under the terms and conditions of |
| 4 | -*.c text eol=lf | 4 | +# CANN Open Software License Agreement Version 2.0 (the "License"). |
| 5 | -*.h text eol=lf | 5 | +# Please refer to the License for details. You may not use this file except in compliance with the License. |
| 6 | -*.cc text eol=lf | 6 | +# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, |
| 7 | -*.hh text eol=lf | 7 | +# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. |
| 8 | -*.cpp text eol=lf | 8 | +# See LICENSE in the root of the software repository for the full text of the License. |
| 9 | -*.hpp text eol=lf | 9 | +# ----------------------------------------------------------------------------------------------------------- |
| 10 | -*.cxx text eol=lf | 10 | + |
| 11 | -*.hxx text eol=lf | 11 | +# 默认所有文本文件使用 LF,防止 Windows autocrlf 转换为 CRLF |
| 12 | -*.asc text eol=lf | 12 | +* text=auto eol=lf |
| 13 | -*.sh text eol=lf | 13 | + |
| 14 | -*.py text eol=lf | 14 | +# LFS 跟踪的图片(二进制,不转换换行) |
| 15 | -*.cmake text eol=lf | 15 | +*.png filter=lfs diff=lfs merge=lfs -text |
| 16 | -CMakeLists.txt text eol=lf | 16 | +*.gif filter=lfs diff=lfs merge=lfs -text |
| @@ -1,49 +1,49 @@ | |||
| 1 | -name: st_action | 1 | +name: st_action |
| 2 | - | 2 | + |
| 3 | -on: | 3 | +on: |
| 4 | - workflow_call: | 4 | + workflow_call: |
| 5 | - inputs: | 5 | + inputs: |
| 6 | - image_version: | 6 | + image_version: |
| 7 | - required: true | 7 | + required: true |
| 8 | - type: string | 8 | + type: string |
| 9 | - | 9 | + |
| 10 | -jobs: | 10 | +jobs: |
| 11 | - JOB_st: | 11 | + JOB_st: |
| 12 | - name: ST | 12 | + name: ST |
| 13 | - needs: [] | 13 | + needs: [] |
| 14 | - steps: | 14 | + steps: |
| 15 | - - | 15 | + - |
| 16 | - name: Checkout | 16 | + name: Checkout |
| 17 | - identifier: process_checkout | 17 | + identifier: process_checkout |
| 18 | - uses: checkout | 18 | + uses: checkout |
| 19 | - with: | 19 | + with: |
| 20 | - ref: ${{ atomgit.event.pull_request.merge_commit_sha }} | 20 | + ref: ${{ atomgit.event.pull_request.merge_commit_sha }} |
| 21 | - token: ${{ secrets.GIT_TOKEN }} | 21 | + token: ${{ secrets.GIT_TOKEN }} |
| 22 | - - | 22 | + - |
| 23 | - name: download | 23 | + name: download |
| 24 | - uses: obs-download | 24 | + uses: obs-download |
| 25 | - with: | 25 | + with: |
| 26 | - endpoint: "https://obs.cn-north-4.myhuaweicloud.com" | 26 | + endpoint: "https://obs.cn-north-4.myhuaweicloud.com" |
| 27 | - bucket: "ascend-ci" | 27 | + bucket: "ascend-ci" |
| 28 | - access-key: ${{ secrets.AK }} | 28 | + access-key: ${{ secrets.AK }} |
| 29 | - secret-key: ${{ secrets.SK }} | 29 | + secret-key: ${{ secrets.SK }} |
| 30 | - key: | | 30 | + key: | |
| 31 | - ${{ env.obs_path }}/pr_filelist.txt | 31 | + ${{ env.obs_path }}/pr_filelist.txt |
| 32 | - ${{ env.obs_path }}/pr_filelist_mod.txt | 32 | + ${{ env.obs_path }}/pr_filelist_mod.txt |
| 33 | - ${{ env.obs_path }}/st.sh | 33 | + ${{ env.obs_path }}/st.sh |
| 34 | - path: ${{ steps.process_checkout.outputs.path }} | 34 | + path: ${{ steps.process_checkout.outputs.path }} |
| 35 | - - | 35 | + - |
| 36 | - name: redis-cache | 36 | + name: redis-cache |
| 37 | - uses: cann/.gitcode/actions/redis-cache@master | 37 | + uses: cann/.gitcode/actions/redis-cache@master |
| 38 | - - | 38 | + - |
| 39 | - name: st_acc | 39 | + name: st_acc |
| 40 | - identifier: st | 40 | + identifier: st |
| 41 | - run: | | 41 | + run: | |
| 42 | - export WORKSPACE=${{ steps.process_checkout.outputs.path }} | 42 | + export WORKSPACE=${{ steps.process_checkout.outputs.path }} |
| 43 | - cd ${{ steps.process_checkout.outputs.path }} | 43 | + cd ${{ steps.process_checkout.outputs.path }} |
| 44 | - export obs_path=${{ env.obs_path }} | 44 | + export obs_path=${{ env.obs_path }} |
| 45 | - bash st.sh | 45 | + bash st.sh |
| 46 | - if: "${{ default() }}" | 46 | + if: "${{ default() }}" |
| 47 | - runs-on: ["self-hosted", "arch=x64", "spec=2xlarge"] | 47 | + runs-on: ["self-hosted", "arch=x64", "spec=2xlarge"] |
| 48 | - container: | 48 | + container: |
| 49 | - image: swr.cn-north-4.myhuaweicloud.com/ci_cann/${{ inputs.image_version }} | 49 | + image: swr.cn-north-4.myhuaweicloud.com/ci_cann/${{ inputs.image_version }} |
| @@ -1,6 +1,6 @@ | |||
| 1 | # ----------------------------------------------------------------------------------------------------------- | 1 | # ----------------------------------------------------------------------------------------------------------- |
| 2 | # Copyright (c) 2026 Huawei Technologies Co., Ltd. | 2 | # Copyright (c) 2026 Huawei Technologies Co., Ltd. |
| 3 | -# This program is free software, you can redistribute it and/or modify it under the terms and conditions of | 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"). | 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. | 5 | # Please refer to the License for details. You may not use this file except in compliance with the License. |
| 6 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | 6 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, |
| @@ -1,3 +1,13 @@ | |||
| 1 | +# ----------------------------------------------------------------------------------------------------------- | ||
| 2 | +# Copyright (c) 2026 Huawei Technologies Co., Ltd. | ||
| 3 | +# This program is free software, you can redistribute it and/or modify it under the terms and conditions of | ||
| 4 | +# CANN Open Software License Agreement Version 2.0 (the "License"). | ||
| 5 | +# Please refer to the License for details. You may not use this file except in compliance with the License. | ||
| 6 | +# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | ||
| 7 | +# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 8 | +# See LICENSE in the root of the software repository for the full text of the License. | ||
| 9 | +# ----------------------------------------------------------------------------------------------------------- | ||
| 10 | + | ||
| 1 | repos: | 11 | repos: |
| 2 | # C++ 代码格式化检查 | 12 | # C++ 代码格式化检查 |
| 3 | - repo: https://gitcode.com/pre-commit-clang/mirrors-clang-format | 13 | - repo: https://gitcode.com/pre-commit-clang/mirrors-clang-format |
| @@ -5,7 +15,7 @@ repos: | |||
| 5 | hooks: | 15 | hooks: |
| 6 | - id: clang-format | 16 | - id: clang-format |
| 7 | types_or: [c++, c] | 17 | types_or: [c++, c] |
| 8 | - files: \.(c|h|cpp|hpp|cc|hh|cxx|hxx|asc)$ | 18 | + files: \.(c|h|cc|hh|cpp|hpp|cxx|hxx|h.in|proto|inl)$ |
| 9 | args: | 19 | args: |
| 10 | - "--style=file" | 20 | - "--style=file" |
| 11 | - "--verbose" | 21 | - "--verbose" |
| @@ -1,11 +1,12 @@ | |||
| 1 | 1 | ||
| 2 | -<!-- Copyright (c) 2025 Huawei Technologies Co., Ltd. | 2 | +<!-- |
| 3 | - This program is free software, you can redistribute it and/or modify it under the terms and conditions of | 3 | + * Copyright (c) 2025 Huawei Technologies Co., Ltd. |
| 4 | - CANN Open Software License Agreement Version 2.0 (the "License"). | 4 | + * This program is free software, you can redistribute it and/or modify it under the terms and conditions of |
| 5 | - Please refer to the License for details. You may not use this file except in compliance with the License. | 5 | + * CANN Open Software License Agreement Version 2.0 (the "License"). |
| 6 | - THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | 6 | + * Please refer to the License for details. You may not use this file except in compliance with the License. |
| 7 | - INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | 7 | + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, |
| 8 | - See LICENSE in the root of the software repository for the full text of the License. | 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. | ||
| 9 | --> | 10 | --> |
| 10 | 11 | ||
| 11 | <configuration> | 12 | <configuration> |
| @@ -20,12 +21,15 @@ | |||
| 20 | </policylist> | 21 | </policylist> |
| 21 | <filefilterlist> | 22 | <filefilterlist> |
| 22 | <filefilter name="defaultFilter" desc="Files not to check"> | 23 | <filefilter name="defaultFilter" desc="Files not to check"> |
| 23 | - <filteritem type="filename" name="*.png" desc="skip png files"/> | ||
| 24 | <!--filteritem type="filename" name="*.uvwxyz" desc="Describe the reason for filtering scan results"/--> | 24 | <!--filteritem type="filename" name="*.uvwxyz" desc="Describe the reason for filtering scan results"/--> |
| 25 | <!--filteritem type="filepath" name="abcdefg/.*.uvwxyz" desc="Describe the reason for filtering scan results"/--> | 25 | <!--filteritem type="filepath" name="abcdefg/.*.uvwxyz" desc="Describe the reason for filtering scan results"/--> |
| 26 | <!--filteritem type="filepath" name="projectroot/[a-zA-Z0-9]{20,}.sh" desc="Temp files"/--> | 26 | <!--filteritem type="filepath" name="projectroot/[a-zA-Z0-9]{20,}.sh" desc="Temp files"/--> |
| 27 | </filefilter> | 27 | </filefilter> |
| 28 | <filefilter name="defaultPolicyFilter" desc="Filters for compatibility,license header policies"> | 28 | <filefilter name="defaultPolicyFilter" desc="Filters for compatibility,license header policies"> |
| 29 | + <filteritem type="filename" name="*.csv" desc="skip csv files"/> | ||
| 30 | + <filteritem type="filename" name="*.info" desc="skip png files"/> | ||
| 31 | + <filteritem type="filename" name="LICENSE" desc="skip LICENSE"/> | ||
| 32 | + <filteritem type="filename" name="Third_Party_Open_Source_Software_Notice" desc="skip Third_Party_Open_Source_Software_Notice"/> | ||
| 29 | <!--filteritem type="filename" name="*.uvwxyz" desc="Describe the reason for filtering scan results"/--> | 33 | <!--filteritem type="filename" name="*.uvwxyz" desc="Describe the reason for filtering scan results"/--> |
| 30 | <!--filteritem type="filepath" name="abcdefg/.*.uvwxyz" desc="Describe the reason for filtering scan results"/--> | 34 | <!--filteritem type="filepath" name="abcdefg/.*.uvwxyz" desc="Describe the reason for filtering scan results"/--> |
| 31 | <!--filteritem type="filepath" name="projectroot/[a-zA-Z0-9]{20,}.sh" desc="Temp files"/--> | 35 | <!--filteritem type="filepath" name="projectroot/[a-zA-Z0-9]{20,}.sh" desc="Temp files"/--> |
| @@ -51,6 +55,9 @@ | |||
| 51 | <!--filteritem type="filepath" name="projectroot/[a-zA-Z0-9]{20,}.sh" desc="Temp files"/--> | 55 | <!--filteritem type="filepath" name="projectroot/[a-zA-Z0-9]{20,}.sh" desc="Temp files"/--> |
| 52 | </filefilter> | 56 | </filefilter> |
| 53 | <filefilter name="binaryFileTypePolicyFilter" desc="Filters for binary file policies"> | 57 | <filefilter name="binaryFileTypePolicyFilter" desc="Filters for binary file policies"> |
| 58 | + <filteritem type="filename" name="*.png" desc="skip png files"/> | ||
| 59 | + <filteritem type="filename" name="*.gif" desc="skip gif files"/> | ||
| 60 | + <filteritem type="filepath" name="test/ut/stub/workspace/fwkacllib/lib64/.*\.o" desc="skip stub object files"/> | ||
| 54 | <!--filteritem type="filename" name="*.uvwxyz" desc="Describe the reason for filtering scan results"/--> | 61 | <!--filteritem type="filename" name="*.uvwxyz" desc="Describe the reason for filtering scan results"/--> |
| 55 | <!--filteritem type="filepath" name="abcdefg/.*.uvwxyz" desc="Describe the reason for filtering scan results"/--> | 62 | <!--filteritem type="filepath" name="abcdefg/.*.uvwxyz" desc="Describe the reason for filtering scan results"/--> |
| 56 | <!--filteritem type="filepath" name="projectroot/[a-zA-Z0-9]{20,}.sh" desc="Temp files"/--> | 63 | <!--filteritem type="filepath" name="projectroot/[a-zA-Z0-9]{20,}.sh" desc="Temp files"/--> |
| @@ -1,10 +1,12 @@ | |||
| 1 | +# ----------------------------------------------------------------------------------------------------------- | ||
| 1 | # Copyright (c) 2025 Huawei Technologies Co., Ltd. | 2 | # Copyright (c) 2025 Huawei Technologies Co., Ltd. |
| 2 | -# This program is free software, you can redistribute it and/or modify it under the terms and conditions of | 3 | +# This program is free software, you can redistribute it and/or modify it under the terms and conditions of |
| 3 | # CANN Open Software License Agreement Version 2.0 (the "License"). | 4 | # CANN Open Software License Agreement Version 2.0 (the "License"). |
| 4 | # Please refer to the License for details. You may not use this file except in compliance with the License. | 5 | # Please refer to the License for details. You may not use this file except in compliance with the License. |
| 5 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | 6 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, |
| 6 | # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | 7 | # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. |
| 7 | # See LICENSE in the root of the software repository for the full text of the License. | 8 | # See LICENSE in the root of the software repository for the full text of the License. |
| 9 | +# ----------------------------------------------------------------------------------------------------------- | ||
| 8 | 10 | ||
| 9 | json: | 11 | json: |
| 10 | version: v3.11.3 | 12 | version: v3.11.3 |
| @@ -1,10 +1,12 @@ | |||
| 1 | +# ----------------------------------------------------------------------------------------------------------- | ||
| 1 | # Copyright (c) 2025 Huawei Technologies Co., Ltd. | 2 | # Copyright (c) 2025 Huawei Technologies Co., Ltd. |
| 2 | -# This program is free software, you can redistribute it and/or modify it under the terms and conditions of | 3 | +# This program is free software, you can redistribute it and/or modify it under the terms and conditions of |
| 3 | # CANN Open Software License Agreement Version 2.0 (the "License"). | 4 | # CANN Open Software License Agreement Version 2.0 (the "License"). |
| 4 | # Please refer to the License for details. You may not use this file except in compliance with the License. | 5 | # Please refer to the License for details. You may not use this file except in compliance with the License. |
| 5 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | 6 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, |
| 6 | # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | 7 | # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. |
| 7 | # See LICENSE in the root of the software repository for the full text of the License. | 8 | # See LICENSE in the root of the software repository for the full text of the License. |
| 9 | +# ----------------------------------------------------------------------------------------------------------- | ||
| 8 | 10 | ||
| 9 | hcomm: | 11 | hcomm: |
| 10 | commiter: | 12 | commiter: |
| @@ -1,4 +1,4 @@ | |||
| 1 | -# ------------------------------------------------------------------------------------------------------------ | 1 | +# ----------------------------------------------------------------------------------------------------------- |
| 2 | # Copyright (c) 2026 Huawei Technologies Co., Ltd. | 2 | # Copyright (c) 2026 Huawei Technologies Co., Ltd. |
| 3 | # This program is free software, you can redistribute it and/or modify it under the terms and conditions of | 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"). | 4 | # CANN Open Software License Agreement Version 2.0 (the "License"). |
| @@ -6,7 +6,7 @@ | |||
| 6 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | 6 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, |
| 7 | # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | 7 | # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. |
| 8 | # See LICENSE in the root of the software repository for the full text of the License. | 8 | # See LICENSE in the root of the software repository for the full text of the License. |
| 9 | -# ------------------------------------------------------------------------------------------------------------ | 9 | +# ----------------------------------------------------------------------------------------------------------- |
| 10 | 10 | ||
| 11 | message(STATUS "Build third party library ibv_extend") | 11 | message(STATUS "Build third party library ibv_extend") |
| 12 | 12 | ||
| @@ -1,4 +1,4 @@ | |||
| 1 | -# ------------------------------------------------------------------------------------------------------------ | 1 | +# ----------------------------------------------------------------------------------------------------------- |
| 2 | # Copyright (c) 2026 Huawei Technologies Co., Ltd. | 2 | # Copyright (c) 2026 Huawei Technologies Co., Ltd. |
| 3 | # This program is free software, you can redistribute it and/or modify it under the terms and conditions of | 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"). | 4 | # CANN Open Software License Agreement Version 2.0 (the "License"). |
| @@ -6,7 +6,7 @@ | |||
| 6 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, | 6 | # THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, |
| 7 | # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. | 7 | # INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. |
| 8 | # See LICENSE in the root of the software repository for the full text of the License. | 8 | # See LICENSE in the root of the software repository for the full text of the License. |
| 9 | -# ------------------------------------------------------------------------------------------------------------ | 9 | +# ----------------------------------------------------------------------------------------------------------- |
| 10 | 10 | ||
| 11 | message("Build third party library urma") | 11 | message("Build third party library urma") |
| 12 | set(URMA_NAME "urma") | 12 | set(URMA_NAME "urma") |
| @@ -1,97 +1,97 @@ | |||
| 1 | -# HcclAicpuKernelLaunch | 1 | +# HcclAicpuKernelLaunch |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | -<!-- npu="950" id1 --> | 5 | +<!-- npu="950" id1 --> |
| 6 | -- Ascend 950PR/Ascend 950DT:支持 | 6 | +- Ascend 950PR/Ascend 950DT:支持 |
| 7 | -<!-- end id1 --> | 7 | +<!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:不支持 | 15 | +- Atlas 推理系列产品:不支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:不支持 | 18 | +- Atlas 训练系列产品:不支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | -在AI CPU上运行核函数。该接口用于下发自定义通信算子到AI CPU执行,支持在Group通信场景和非Group通信场景下使用。 | 23 | +在AI CPU上运行核函数。该接口用于下发自定义通信算子到AI CPU执行,支持在Group通信场景和非Group通信场景下使用。 |
| 24 | - | 24 | + |
| 25 | -在Group通信场景下(调用了HcclGroupStart),该接口会将任务添加到Group任务队列中,等待HcclGroupEnd时统一执行;在非Group通信场景下,直接在AI CPU上运行核函数。 | 25 | +在Group通信场景下(调用了HcclGroupStart),该接口会将任务添加到Group任务队列中,等待HcclGroupEnd时统一执行;在非Group通信场景下,直接在AI CPU上运行核函数。 |
| 26 | - | 26 | + |
| 27 | -## 函数原型 | 27 | +## 函数原型 |
| 28 | - | 28 | + |
| 29 | -```c | 29 | +```c |
| 30 | -HcclResult HcclAicpuKernelLaunch(HcclComm comm, const HcclOpDesc *opInfo, const HcclKernelFuncInfo *funcInfo, ThreadHandle aicpuThreadHandle, aclrtStream userStream, const HcclKernelLaunchCfg *kernelLaunchCfg); | 30 | +HcclResult HcclAicpuKernelLaunch(HcclComm comm, const HcclOpDesc *opInfo, const HcclKernelFuncInfo *funcInfo, ThreadHandle aicpuThreadHandle, aclrtStream userStream, const HcclKernelLaunchCfg *kernelLaunchCfg); |
| 31 | -``` | 31 | +``` |
| 32 | - | 32 | + |
| 33 | -## 参数说明 | 33 | +## 参数说明 |
| 34 | - | 34 | + |
| 35 | -| 参数名 | 输入/输出 | 描述 | | 35 | +| 参数名 | 输入/输出 | 描述 | |
| 36 | -| --- | --- | --- | | 36 | +| --- | --- | --- | |
| 37 | -| comm | 输入 | 集合通信操作所在的通信域。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | | 37 | +| comm | 输入 | 集合通信操作所在的通信域。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | |
| 38 | -| opInfo | 输入 | 算子描述参数,包含算子类型和名称相关参数。<br>HcclOpDesc类型的定义可参见数据类型[HcclOpDesc](./data_type_definition/HcclOpDesc.md)。 | | 38 | +| opInfo | 输入 | 算子描述参数,包含算子类型和名称相关参数。<br>HcclOpDesc类型的定义可参见数据类型[HcclOpDesc](./data_type_definition/HcclOpDesc.md)。 | |
| 39 | -| funcInfo | 输入 | 核函数信息,包含动态库名、函数名、参数及参数大小。<br>HcclKernelFuncInfo类型的定义可参见数据类型[HcclKernelFuncInfo](./data_type_definition/HcclKernelFuncInfo.md)。 | | 39 | +| funcInfo | 输入 | 核函数信息,包含动态库名、函数名、参数及参数大小。<br>HcclKernelFuncInfo类型的定义可参见数据类型[HcclKernelFuncInfo](./data_type_definition/HcclKernelFuncInfo.md)。 | |
| 40 | -| aicpuThreadHandle | 输入 | AICPU通信主流线程句柄。<br>ThreadHandle类型的定义可参见[ThreadHandle](../comm_opdev/datatype_definition/ThreadHandle.md) | | 40 | +| aicpuThreadHandle | 输入 | AICPU通信主流线程句柄。<br>ThreadHandle类型的定义可参见[ThreadHandle](../comm_opdev/datatype_definition/ThreadHandle.md) | |
| 41 | -| userStream | 输入 | 本rank所使用的stream。 | | 41 | +| userStream | 输入 | 本rank所使用的stream。 | |
| 42 | -| kernelLaunchCfg | 输入 | 运行核函数的相关配置,包含超时时间等参数。<br>HcclKernelLaunchCfg类型的定义可参见数据类型[HcclKernelLaunchCfg](./data_type_definition/HcclKernelLaunchCfg.md)。 | | 42 | +| kernelLaunchCfg | 输入 | 运行核函数的相关配置,包含超时时间等参数。<br>HcclKernelLaunchCfg类型的定义可参见数据类型[HcclKernelLaunchCfg](./data_type_definition/HcclKernelLaunchCfg.md)。 | |
| 43 | - | 43 | + |
| 44 | -## 返回值 | 44 | +## 返回值 |
| 45 | - | 45 | + |
| 46 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 46 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 47 | - | 47 | + |
| 48 | -## 约束说明 | 48 | +## 约束说明 |
| 49 | - | 49 | + |
| 50 | -- 自定义通信算子场景使用(当前仅支持Send和Receive算子)。 | 50 | +- 自定义通信算子场景使用(当前仅支持Send和Receive算子)。 |
| 51 | -- 调用前需确保通信域已正确初始化。 | 51 | +- 调用前需确保通信域已正确初始化。 |
| 52 | - | 52 | + |
| 53 | -## 调用示例 | 53 | +## 调用示例 |
| 54 | - | 54 | + |
| 55 | -```c | 55 | +```c |
| 56 | -// 初始化算子描述参数 | 56 | +// 初始化算子描述参数 |
| 57 | -HcclComm comm; | 57 | +HcclComm comm; |
| 58 | -CommEngine engine = COMM_ENGINE_AICPU_TS; | 58 | +CommEngine engine = COMM_ENGINE_AICPU_TS; |
| 59 | -aclrtStream userStream; | 59 | +aclrtStream userStream; |
| 60 | -aclrtCreateStream(&userStream); | 60 | +aclrtCreateStream(&userStream); |
| 61 | -ThreadHandle aicpuThreadHandle; | 61 | +ThreadHandle aicpuThreadHandle; |
| 62 | -HcclResult ret = HcclThreadAcquire(comm, engine, 1, 1, &aicpuThreadHandle); | 62 | +HcclResult ret = HcclThreadAcquire(comm, engine, 1, 1, &aicpuThreadHandle); |
| 63 | -if (ret != HCCL_SUCCESS) { | 63 | +if (ret != HCCL_SUCCESS) { |
| 64 | - // 处理错误 | 64 | + // 处理错误 |
| 65 | -} | 65 | +} |
| 66 | - | 66 | + |
| 67 | -HcclOpDesc opInfo; | 67 | +HcclOpDesc opInfo; |
| 68 | -HcclOpDescInit(&opInfo); | 68 | +HcclOpDescInit(&opInfo); |
| 69 | -opInfo.opDescType = 1; // 代表Send或Receive算子 | 69 | +opInfo.opDescType = 1; // 代表Send或Receive算子 |
| 70 | -opInfo.p2p.buffer = sendBuffer; | 70 | +opInfo.p2p.buffer = sendBuffer; |
| 71 | -opInfo.p2p.cmdType = HCCL_CMD_SEND; | 71 | +opInfo.p2p.cmdType = HCCL_CMD_SEND; |
| 72 | -opInfo.p2p.dataType = HCCL_DATA_TYPE_FP32; | 72 | +opInfo.p2p.dataType = HCCL_DATA_TYPE_FP32; |
| 73 | -opInfo.p2p.count = dataSize; | 73 | +opInfo.p2p.count = dataSize; |
| 74 | -opInfo.p2p.remoteRank = destRank; | 74 | +opInfo.p2p.remoteRank = destRank; |
| 75 | -opInfo.p2p.unfoldStream = userStream; | 75 | +opInfo.p2p.unfoldStream = userStream; |
| 76 | - | 76 | + |
| 77 | -// 初始化核函数信息 | 77 | +// 初始化核函数信息 |
| 78 | -HcclKernelFuncInfo funcInfo; | 78 | +HcclKernelFuncInfo funcInfo; |
| 79 | -strncpy_s(funcInfo.kernelSoName, HCCL_KERNEL_SO_NAME_MAX_LEN, "libscatter_aicpu_kernel.so", strlen("libscatter_aicpu_kernel.so") + 1); | 79 | +strncpy_s(funcInfo.kernelSoName, HCCL_KERNEL_SO_NAME_MAX_LEN, "libscatter_aicpu_kernel.so", strlen("libscatter_aicpu_kernel.so") + 1); |
| 80 | -strncpy_s(funcInfo.kernelFuncName, HCCL_KERNEL_FUNC_NAME_MAX_LEN, "HcclLaunchP2pAicpuKernel", strlen("HcclLaunchP2pAicpuKernel") + 1); | 80 | +strncpy_s(funcInfo.kernelFuncName, HCCL_KERNEL_FUNC_NAME_MAX_LEN, "HcclLaunchP2pAicpuKernel", strlen("HcclLaunchP2pAicpuKernel") + 1); |
| 81 | -funcInfo.args = kernelArgs; | 81 | +funcInfo.args = kernelArgs; |
| 82 | -funcInfo.argSize = argsSize; | 82 | +funcInfo.argSize = argsSize; |
| 83 | - | 83 | + |
| 84 | -// 初始化核函数配置 | 84 | +// 初始化核函数配置 |
| 85 | -AicpuTimeout timeout = DeriveAicpuTimeout(param.opConfig.execTimeout); | 85 | +AicpuTimeout timeout = DeriveAicpuTimeout(param.opConfig.execTimeout); |
| 86 | -u16 kernelLaunchTimeout = IsHcommDefaultTimeoutSupported() ? timeout.kernelLaunchTimeout : | 86 | +u16 kernelLaunchTimeout = IsHcommDefaultTimeoutSupported() ? timeout.kernelLaunchTimeout : |
| 87 | -ToKernelLaunchTimeout(AddAicpuTimeoutOffset(param.opConfig.execTimeout, KERNEL_TIMEOUT_OFFSET)); | 87 | +ToKernelLaunchTimeout(AddAicpuTimeoutOffset(param.opConfig.execTimeout, KERNEL_TIMEOUT_OFFSET)); |
| 88 | -HcclKernelLaunchCfg kernelLaunchCfg; | 88 | +HcclKernelLaunchCfg kernelLaunchCfg; |
| 89 | -HcclKernelLaunchCfgInit(&kernelLaunchCfg); | 89 | +HcclKernelLaunchCfgInit(&kernelLaunchCfg); |
| 90 | -kernelLaunchCfg.timeOut = kernelLaunchTimeout; | 90 | +kernelLaunchCfg.timeOut = kernelLaunchTimeout; |
| 91 | - | 91 | + |
| 92 | -// 运行AI CPU核函数 | 92 | +// 运行AI CPU核函数 |
| 93 | -ret = HcclAicpuKernelLaunch(comm, &opInfo, &funcInfo, aicpuThreadHandle, userStream, &kernelLaunchCfg); | 93 | +ret = HcclAicpuKernelLaunch(comm, &opInfo, &funcInfo, aicpuThreadHandle, userStream, &kernelLaunchCfg); |
| 94 | -if (ret != HCCL_SUCCESS) { | 94 | +if (ret != HCCL_SUCCESS) { |
| 95 | - // 处理错误 | 95 | + // 处理错误 |
| 96 | -} | 96 | +} |
| 97 | -``` | 97 | +``` |
| @@ -1,58 +1,58 @@ | |||
| 1 | -# HcclBarrier | 1 | +# HcclBarrier |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | -<!-- npu="950" id1 --> | 5 | +<!-- npu="950" id1 --> |
| 6 | -- Ascend 950PR/Ascend 950DT:支持 | 6 | +- Ascend 950PR/Ascend 950DT:支持 |
| 7 | -<!-- end id1 --> | 7 | +<!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:不支持 | 15 | +- Atlas 推理系列产品:不支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:支持 | 18 | +- Atlas 训练系列产品:支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | -将指定通信域内所有rank的stream阻塞,直到所有rank都下发执行该操作为止。 | 23 | +将指定通信域内所有rank的stream阻塞,直到所有rank都下发执行该操作为止。 |
| 24 | - | 24 | + |
| 25 | -## 函数原型 | 25 | +## 函数原型 |
| 26 | - | 26 | + |
| 27 | -```c | 27 | +```c |
| 28 | -HcclResult HcclBarrier(HcclComm comm, aclrtStream stream) | 28 | +HcclResult HcclBarrier(HcclComm comm, aclrtStream stream) |
| 29 | -``` | 29 | +``` |
| 30 | - | 30 | + |
| 31 | -## 参数说明 | 31 | +## 参数说明 |
| 32 | - | 32 | + |
| 33 | -| 参数名 | 输入/输出 | 描述 | | 33 | +| 参数名 | 输入/输出 | 描述 | |
| 34 | -| --- | --- | --- | | 34 | +| --- | --- | --- | |
| 35 | -| comm | 输入 | 集合通信操作所在的通信域。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | | 35 | +| comm | 输入 | 集合通信操作所在的通信域。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | |
| 36 | -| stream | 输入 | 本rank所使用的stream。 | | 36 | +| stream | 输入 | 本rank所使用的stream。 | |
| 37 | - | 37 | + |
| 38 | -## 返回值 | 38 | +## 返回值 |
| 39 | - | 39 | + |
| 40 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 40 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 41 | - | 41 | + |
| 42 | -## 约束说明 | 42 | +## 约束说明 |
| 43 | - | 43 | + |
| 44 | -无 | 44 | +无 |
| 45 | - | 45 | + |
| 46 | -## 调用示例 | 46 | +## 调用示例 |
| 47 | - | 47 | + |
| 48 | -```c | 48 | +```c |
| 49 | -HcclComm comm; | 49 | +HcclComm comm; |
| 50 | -aclrtStream stream; | 50 | +aclrtStream stream; |
| 51 | -aclrtCreateStream(&stream); | 51 | +aclrtCreateStream(&stream); |
| 52 | - | 52 | + |
| 53 | -// 下发通信任务到该stream,如HcclAllReduce | 53 | +// 下发通信任务到该stream,如HcclAllReduce |
| 54 | -// ... | 54 | +// ... |
| 55 | - | 55 | + |
| 56 | -// 阻塞等待所有rank均执行Barrier操作 | 56 | +// 阻塞等待所有rank均执行Barrier操作 |
| 57 | -HcclBarrier(comm, stream); | 57 | +HcclBarrier(comm, stream); |
| 58 | -``` | 58 | +``` |
| @@ -1,76 +1,76 @@ | |||
| 1 | -# HcclCommActivateCommMemory | 1 | +# HcclCommActivateCommMemory |
| 2 | - | 2 | + |
| 3 | -> [!NOTE]说明 | 3 | +> [!NOTE]说明 |
| 4 | -> 本接口为试用接口,后续可能存在变更,暂不支持应用于生产环境。 | 4 | +> 本接口为试用接口,后续可能存在变更,暂不支持应用于生产环境。 |
| 5 | - | 5 | + |
| 6 | -## 产品支持情况 | 6 | +## 产品支持情况 |
| 7 | - | 7 | + |
| 8 | -<!-- npu="950" id1 --> | 8 | +<!-- npu="950" id1 --> |
| 9 | -- Ascend 950PR/Ascend 950DT:不支持 | 9 | +- Ascend 950PR/Ascend 950DT:不支持 |
| 10 | -<!-- end id1 --> | 10 | +<!-- end id1 --> |
| 11 | -<!-- npu="A3" id2 --> | 11 | +<!-- npu="A3" id2 --> |
| 12 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 12 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 13 | -<!-- end id2 --> | 13 | +<!-- end id2 --> |
| 14 | -<!-- npu="910b" id3 --> | 14 | +<!-- npu="910b" id3 --> |
| 15 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 | 15 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 |
| 16 | -<!-- end id3 --> | 16 | +<!-- end id3 --> |
| 17 | -<!-- npu="310p" id4 --> | 17 | +<!-- npu="310p" id4 --> |
| 18 | -- Atlas 推理系列产品:不支持 | 18 | +- Atlas 推理系列产品:不支持 |
| 19 | -<!-- end id4 --> | 19 | +<!-- end id4 --> |
| 20 | -<!-- npu="910" id5 --> | 20 | +<!-- npu="910" id5 --> |
| 21 | -- Atlas 训练系列产品:不支持 | 21 | +- Atlas 训练系列产品:不支持 |
| 22 | -<!-- end id5 --> | 22 | +<!-- end id5 --> |
| 23 | - | 23 | + |
| 24 | -## 功能说明 | 24 | +## 功能说明 |
| 25 | - | 25 | + |
| 26 | -激活预留的虚拟内存,只有使用激活后的内存作为通信算子的输入、输出才可开启零拷贝功能。 | 26 | +激活预留的虚拟内存,只有使用激活后的内存作为通信算子的输入、输出才可开启零拷贝功能。 |
| 27 | - | 27 | + |
| 28 | -## 函数原型 | 28 | +## 函数原型 |
| 29 | - | 29 | + |
| 30 | -```c | 30 | +```c |
| 31 | -HcclResult HcclCommActivateCommMemory(HcclComm comm, void *virPtr, size_t size, size_t offset, aclrtDrvMemHandle handle, uint64_t flags) | 31 | +HcclResult HcclCommActivateCommMemory(HcclComm comm, void *virPtr, size_t size, size_t offset, aclrtDrvMemHandle handle, uint64_t flags) |
| 32 | -``` | 32 | +``` |
| 33 | - | 33 | + |
| 34 | -## 参数说明 | 34 | +## 参数说明 |
| 35 | - | 35 | + |
| 36 | -| 参数名 | 输入/输出 | 描述 | | 36 | +| 参数名 | 输入/输出 | 描述 | |
| 37 | -| --- | --- | --- | | 37 | +| --- | --- | --- | |
| 38 | -| comm | 输入 | HCCL通信域,建议使用Server内最大的通信域,即覆盖最大卡数的通信域。 | | 38 | +| comm | 输入 | HCCL通信域,建议使用Server内最大的通信域,即覆盖最大卡数的通信域。 | |
| 39 | -| virPtr | 输入 | 需要激活的虚拟内存地址,即用户调用aclrtMapMem接口进行物理内存与虚拟内存映射时,传入的待映射的虚拟内存地址。 | | 39 | +| virPtr | 输入 | 需要激活的虚拟内存地址,即用户调用aclrtMapMem接口进行物理内存与虚拟内存映射时,传入的待映射的虚拟内存地址。 | |
| 40 | -| size | 输入 | 需要激活的内存大小,单位:Byte。 | | 40 | +| size | 输入 | 需要激活的内存大小,单位:Byte。 | |
| 41 | -| offset | 输入 | 预留字段。<br>当前仅支持配置为“0”。 | | 41 | +| offset | 输入 | 预留字段。<br>当前仅支持配置为“0”。 | |
| 42 | -| handle | 输入 | 申请的物理内存信息handle,即用户调用aclrtMallocPhysical接口申请的Device物理内存信息handle。 | | 42 | +| handle | 输入 | 申请的物理内存信息handle,即用户调用aclrtMallocPhysical接口申请的Device物理内存信息handle。 | |
| 43 | -| flags | 输入 | 预留字段。<br>当前仅支持配置为“0”。 | | 43 | +| flags | 输入 | 预留字段。<br>当前仅支持配置为“0”。 | |
| 44 | - | 44 | + |
| 45 | -## 返回值 | 45 | +## 返回值 |
| 46 | - | 46 | + |
| 47 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 47 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 48 | - | 48 | + |
| 49 | -## 约束说明 | 49 | +## 约束说明 |
| 50 | - | 50 | + |
| 51 | -- 待激活的虚拟内存地址必须在[HcclCommSetMemoryRange](HcclCommSetMemoryRange.md)设置的地址范围内。 | 51 | +- 待激活的虚拟内存地址必须在[HcclCommSetMemoryRange](HcclCommSetMemoryRange.md)设置的地址范围内。 |
| 52 | -- 该虚拟内存地址不能与已经激活的虚拟内存地址有重叠、交叠。 | 52 | +- 该虚拟内存地址不能与已经激活的虚拟内存地址有重叠、交叠。 |
| 53 | - | 53 | + |
| 54 | -## 调用示例 | 54 | +## 调用示例 |
| 55 | - | 55 | + |
| 56 | -```c | 56 | +```c |
| 57 | -// 假设已通过HcclCommSetMemoryRange设置了虚拟内存范围 | 57 | +// 假设已通过HcclCommSetMemoryRange设置了虚拟内存范围 |
| 58 | -// baseVirPtr为虚拟内存基地址 | 58 | +// baseVirPtr为虚拟内存基地址 |
| 59 | - | 59 | + |
| 60 | -// 申请物理内存 | 60 | +// 申请物理内存 |
| 61 | -aclrtDrvMemHandle handle; | 61 | +aclrtDrvMemHandle handle; |
| 62 | -aclrtMallocPhysical(&handle, size, NULL, 0); | 62 | +aclrtMallocPhysical(&handle, size, NULL, 0); |
| 63 | - | 63 | + |
| 64 | -// 将物理内存映射到虚拟内存 | 64 | +// 将物理内存映射到虚拟内存 |
| 65 | -void *virPtr = baseVirPtr; | 65 | +void *virPtr = baseVirPtr; |
| 66 | -aclrtMapMem(virPtr, size, 0, handle, 0); | 66 | +aclrtMapMem(virPtr, size, 0, handle, 0); |
| 67 | - | 67 | + |
| 68 | -// 激活预留的虚拟内存 | 68 | +// 激活预留的虚拟内存 |
| 69 | -HcclCommActivateCommMemory(hcclComm, virPtr, size, 0, handle, 0); | 69 | +HcclCommActivateCommMemory(hcclComm, virPtr, size, 0, handle, 0); |
| 70 | - | 70 | + |
| 71 | -// 后续可使用激活后的内存进行零拷贝通信 | 71 | +// 后续可使用激活后的内存进行零拷贝通信 |
| 72 | -// ... | 72 | +// ... |
| 73 | - | 73 | + |
| 74 | -// 反激活内存 | 74 | +// 反激活内存 |
| 75 | -HcclCommDeactivateCommMemory(hcclComm, virPtr); | 75 | +HcclCommDeactivateCommMemory(hcclComm, virPtr); |
| 76 | -``` | 76 | +``` |
| @@ -1,68 +1,68 @@ | |||
| 1 | -# HcclCommConfigInit | 1 | +# HcclCommConfigInit |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | -<!-- npu="950" id1 --> | 5 | +<!-- npu="950" id1 --> |
| 6 | -- Ascend 950PR/Ascend 950DT:支持 | 6 | +- Ascend 950PR/Ascend 950DT:支持 |
| 7 | -<!-- end id1 --> | 7 | +<!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:支持 | 15 | +- Atlas 推理系列产品:支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:支持 | 18 | +- Atlas 训练系列产品:支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | -初始化通信域配置项。 | 23 | +初始化通信域配置项。 |
| 24 | - | 24 | + |
| 25 | -## 函数原型 | 25 | +## 函数原型 |
| 26 | - | 26 | + |
| 27 | -```c | 27 | +```c |
| 28 | -static inline void HcclCommConfigInit(HcclCommConfig *config) | 28 | +static inline void HcclCommConfigInit(HcclCommConfig *config) |
| 29 | -``` | 29 | +``` |
| 30 | - | 30 | + |
| 31 | -## 参数说明 | 31 | +## 参数说明 |
| 32 | - | 32 | + |
| 33 | -| 参数名 | 输入/输出 | 描述 | | 33 | +| 参数名 | 输入/输出 | 描述 | |
| 34 | -| --- | --- | --- | | 34 | +| --- | --- | --- | |
| 35 | -| config | 输出 | 需要初始化的通信域配置项。<br>HcclCommConfig类型的定义可参见[HcclCommConfig](./data_type_definition/HcclCommConfig.md)。 | | 35 | +| config | 输出 | 需要初始化的通信域配置项。<br>HcclCommConfig类型的定义可参见[HcclCommConfig](./data_type_definition/HcclCommConfig.md)。 | |
| 36 | - | 36 | + |
| 37 | -## 返回值 | 37 | +## 返回值 |
| 38 | - | 38 | + |
| 39 | -无 | 39 | +无 |
| 40 | - | 40 | + |
| 41 | -## 约束说明 | 41 | +## 约束说明 |
| 42 | - | 42 | + |
| 43 | -无 | 43 | +无 |
| 44 | - | 44 | + |
| 45 | -## 调用示例 | 45 | +## 调用示例 |
| 46 | - | 46 | + |
| 47 | -```c | 47 | +```c |
| 48 | -uint32_t rankSize = 8; | 48 | +uint32_t rankSize = 8; |
| 49 | -uint32_t deviceId = 0; | 49 | +uint32_t deviceId = 0; |
| 50 | -// 生成root节点的rank标识信息 | 50 | +// 生成root节点的rank标识信息 |
| 51 | -HcclRootInfo rootInfo; | 51 | +HcclRootInfo rootInfo; |
| 52 | -HcclGetRootInfo(&rootInfo); | 52 | +HcclGetRootInfo(&rootInfo); |
| 53 | - | 53 | + |
| 54 | -// 创建并初始化通信域配置项 | 54 | +// 创建并初始化通信域配置项 |
| 55 | -HcclCommConfig config; | 55 | +HcclCommConfig config; |
| 56 | -HcclCommConfigInit(&config); | 56 | +HcclCommConfigInit(&config); |
| 57 | -// 按需修改通信域配置 | 57 | +// 按需修改通信域配置 |
| 58 | -config.hcclBufferSize = 1024; // 共享数据的缓存区大小,单位为:MB,取值需 >= 1,默认值为:200 | 58 | +config.hcclBufferSize = 1024; // 共享数据的缓存区大小,单位为:MB,取值需 >= 1,默认值为:200 |
| 59 | -config.hcclDeterministic = 1; // 开启归约类通信算子的确定性计算,默认值为:0,表示关闭确定性计算功能 | 59 | +config.hcclDeterministic = 1; // 开启归约类通信算子的确定性计算,默认值为:0,表示关闭确定性计算功能 |
| 60 | -strncpy(config.hcclCommName, "comm_1", COMM_NAME_MAX_LENGTH - 1); | 60 | +strncpy(config.hcclCommName, "comm_1", COMM_NAME_MAX_LENGTH - 1); |
| 61 | -config.hcclCommName[COMM_NAME_MAX_LENGTH - 1] = '\0'; | 61 | +config.hcclCommName[COMM_NAME_MAX_LENGTH - 1] = '\0'; |
| 62 | -// 初始化集合通信域 | 62 | +// 初始化集合通信域 |
| 63 | -HcclComm hcclComm; | 63 | +HcclComm hcclComm; |
| 64 | -HCCLCHECK(HcclCommInitRootInfoConfig(rankSize, &rootInfo, deviceId, &config, &hcclComm)); | 64 | +HCCLCHECK(HcclCommInitRootInfoConfig(rankSize, &rootInfo, deviceId, &config, &hcclComm)); |
| 65 | - | 65 | + |
| 66 | -// 销毁通信域 | 66 | +// 销毁通信域 |
| 67 | -HcclCommDestroy(hcclComm); | 67 | +HcclCommDestroy(hcclComm); |
| 68 | -``` | 68 | +``` |
| @@ -1,59 +1,59 @@ | |||
| 1 | -# HcclCommDeactivateCommMemory | 1 | +# HcclCommDeactivateCommMemory |
| 2 | - | 2 | + |
| 3 | -> [!NOTE]说明 | 3 | +> [!NOTE]说明 |
| 4 | -> 本接口为试用接口,后续可能存在变更,暂不支持应用于生产环境。 | 4 | +> 本接口为试用接口,后续可能存在变更,暂不支持应用于生产环境。 |
| 5 | - | 5 | + |
| 6 | -## 产品支持情况 | 6 | +## 产品支持情况 |
| 7 | - | 7 | + |
| 8 | -<!-- npu="950" id1 --> | 8 | +<!-- npu="950" id1 --> |
| 9 | -- Ascend 950PR/Ascend 950DT:不支持 | 9 | +- Ascend 950PR/Ascend 950DT:不支持 |
| 10 | -<!-- end id1 --> | 10 | +<!-- end id1 --> |
| 11 | -<!-- npu="A3" id2 --> | 11 | +<!-- npu="A3" id2 --> |
| 12 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 12 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 13 | -<!-- end id2 --> | 13 | +<!-- end id2 --> |
| 14 | -<!-- npu="910b" id3 --> | 14 | +<!-- npu="910b" id3 --> |
| 15 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 | 15 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 |
| 16 | -<!-- end id3 --> | 16 | +<!-- end id3 --> |
| 17 | -<!-- npu="310p" id4 --> | 17 | +<!-- npu="310p" id4 --> |
| 18 | -- Atlas 推理系列产品:不支持 | 18 | +- Atlas 推理系列产品:不支持 |
| 19 | -<!-- end id4 --> | 19 | +<!-- end id4 --> |
| 20 | -<!-- npu="910" id5 --> | 20 | +<!-- npu="910" id5 --> |
| 21 | -- Atlas 训练系列产品:不支持 | 21 | +- Atlas 训练系列产品:不支持 |
| 22 | -<!-- end id5 --> | 22 | +<!-- end id5 --> |
| 23 | - | 23 | + |
| 24 | -## 功能说明 | 24 | +## 功能说明 |
| 25 | - | 25 | + |
| 26 | -将已经激活的虚拟内存反激活,反激活后如果再使用该地址进行集合通信,将无法开启零拷贝功能。 | 26 | +将已经激活的虚拟内存反激活,反激活后如果再使用该地址进行集合通信,将无法开启零拷贝功能。 |
| 27 | - | 27 | + |
| 28 | -## 函数原型 | 28 | +## 函数原型 |
| 29 | - | 29 | + |
| 30 | -```c | 30 | +```c |
| 31 | -HcclResult HcclCommDeactivateCommMemory(HcclComm comm, void *virPtr) | 31 | +HcclResult HcclCommDeactivateCommMemory(HcclComm comm, void *virPtr) |
| 32 | -``` | 32 | +``` |
| 33 | - | 33 | + |
| 34 | -## 参数说明 | 34 | +## 参数说明 |
| 35 | - | 35 | + |
| 36 | -| 参数名 | 输入/输出 | 描述 | | 36 | +| 参数名 | 输入/输出 | 描述 | |
| 37 | -| --- | --- | --- | | 37 | +| --- | --- | --- | |
| 38 | -| comm | 输入 | HCCL通信域,建议使用Server内最大的通信域,即覆盖最大卡数的通信域。 | | 38 | +| comm | 输入 | HCCL通信域,建议使用Server内最大的通信域,即覆盖最大卡数的通信域。 | |
| 39 | -| virPtr | 输入 | 需要反激活的虚拟地址的起始地址,即[HcclCommActivateCommMemory](HcclCommActivateCommMemory.md)接口“virPtr”参数指定的虚拟内存地址。<br>需要注意,指定的虚拟内存必须是已成功激活的内存,且仅支持整个地址块反激活。 | | 39 | +| virPtr | 输入 | 需要反激活的虚拟地址的起始地址,即[HcclCommActivateCommMemory](HcclCommActivateCommMemory.md)接口“virPtr”参数指定的虚拟内存地址。<br>需要注意,指定的虚拟内存必须是已成功激活的内存,且仅支持整个地址块反激活。 | |
| 40 | - | 40 | + |
| 41 | -## 返回值 | 41 | +## 返回值 |
| 42 | - | 42 | + |
| 43 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 43 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 44 | - | 44 | + |
| 45 | -## 约束说明 | 45 | +## 约束说明 |
| 46 | - | 46 | + |
| 47 | -无 | 47 | +无 |
| 48 | - | 48 | + |
| 49 | -## 调用示例 | 49 | +## 调用示例 |
| 50 | - | 50 | + |
| 51 | -```c | 51 | +```c |
| 52 | -// 假设virPtr为已通过HcclCommActivateCommMemory激活的虚拟内存地址 | 52 | +// 假设virPtr为已通过HcclCommActivateCommMemory激活的虚拟内存地址 |
| 53 | - | 53 | + |
| 54 | -// 反激活已激活的虚拟内存 | 54 | +// 反激活已激活的虚拟内存 |
| 55 | -HcclCommDeactivateCommMemory(hcclComm, virPtr); | 55 | +HcclCommDeactivateCommMemory(hcclComm, virPtr); |
| 56 | - | 56 | + |
| 57 | -// 后续该地址无法再用于零拷贝通信 | 57 | +// 后续该地址无法再用于零拷贝通信 |
| 58 | -// 如需重新使用,需再次调用HcclCommActivateCommMemory激活 | 58 | +// 如需重新使用,需再次调用HcclCommActivateCommMemory激活 |
| 59 | ``` | 59 | ``` |
| @@ -1,72 +1,72 @@ | |||
| 1 | -# HcclCommDestroy | 1 | +# HcclCommDestroy |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | -<!-- npu="950" id1 --> | 5 | +<!-- npu="950" id1 --> |
| 6 | -- Ascend 950PR/Ascend 950DT:支持 | 6 | +- Ascend 950PR/Ascend 950DT:支持 |
| 7 | -<!-- end id1 --> | 7 | +<!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:支持 | 15 | +- Atlas 推理系列产品:支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:支持 | 18 | +- Atlas 训练系列产品:支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | -销毁指定的HCCL通信域。 | 23 | +销毁指定的HCCL通信域。 |
| 24 | - | 24 | + |
| 25 | -## 函数原型 | 25 | +## 函数原型 |
| 26 | - | 26 | + |
| 27 | -```c | 27 | +```c |
| 28 | -HcclResult HcclCommDestroy(HcclComm comm) | 28 | +HcclResult HcclCommDestroy(HcclComm comm) |
| 29 | -``` | 29 | +``` |
| 30 | - | 30 | + |
| 31 | -## 参数说明 | 31 | +## 参数说明 |
| 32 | - | 32 | + |
| 33 | -| 参数名 | 输入/输出 | 描述 | | 33 | +| 参数名 | 输入/输出 | 描述 | |
| 34 | -| --- | --- | --- | | 34 | +| --- | --- | --- | |
| 35 | -| comm | 输入 | 指向需要销毁的通信域的指针。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | | 35 | +| comm | 输入 | 指向需要销毁的通信域的指针。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | |
| 36 | - | 36 | + |
| 37 | -## 返回值 | 37 | +## 返回值 |
| 38 | - | 38 | + |
| 39 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 39 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 40 | - | 40 | + |
| 41 | -## 约束说明 | 41 | +## 约束说明 |
| 42 | - | 42 | + |
| 43 | -- 此接口支持跨线程调用: | 43 | +- 此接口支持跨线程调用: |
| 44 | - - 当通信域状态处于建链卡住或者未被占用状态时,支持跨线程调用此接口销毁通信域,并返回HCCL_SUCCESS。 | 44 | + - 当通信域状态处于建链卡住或者未被占用状态时,支持跨线程调用此接口销毁通信域,并返回HCCL_SUCCESS。 |
| 45 | - | 45 | + |
| 46 | - 通信域销毁成功后,正在执行的通信算子无需等待超时时间会直接报错退出,并打印ERROR级别日志,日志关键字为“Terminating operation due to external request”。 | 46 | + 通信域销毁成功后,正在执行的通信算子无需等待超时时间会直接报错退出,并打印ERROR级别日志,日志关键字为“Terminating operation due to external request”。 |
| 47 | - | 47 | + |
| 48 | - - 当通信域处于非建链卡住状态,或者其他被占用状态(例如通信域建链过程中、通信算子执行过程中等),跨线程调用此接口时会返回HCCL_E_AGAIN错误,并打印WARNING级别日志,日志关键字为“\[HcclCommDestroy\] comm is in use, please try again later”。 | 48 | + - 当通信域处于非建链卡住状态,或者其他被占用状态(例如通信域建链过程中、通信算子执行过程中等),跨线程调用此接口时会返回HCCL_E_AGAIN错误,并打印WARNING级别日志,日志关键字为“\[HcclCommDestroy\] comm is in use, please try again later”。 |
| 49 | - | 49 | + |
| 50 | -- 多线程场景下,需要确保HCCL接口的调用时序,调用此接口销毁通信域后不再支持调用其他集合通信相关接口。 | 50 | +- 多线程场景下,需要确保HCCL接口的调用时序,调用此接口销毁通信域后不再支持调用其他集合通信相关接口。 |
| 51 | - | 51 | + |
| 52 | -## 调用示例 | 52 | +## 调用示例 |
| 53 | - | 53 | + |
| 54 | -```c | 54 | +```c |
| 55 | -// 设备资源初始化 | 55 | +// 设备资源初始化 |
| 56 | -aclInit(NULL); | 56 | +aclInit(NULL); |
| 57 | -uint32_t rankSize = 2; | 57 | +uint32_t rankSize = 2; |
| 58 | -int32_t devices[rankSize] = {0, 1}; | 58 | +int32_t devices[rankSize] = {0, 1}; |
| 59 | -HcclComm comms[rankSize]; | 59 | +HcclComm comms[rankSize]; |
| 60 | -// 指定集合通信操作使用的设备 | 60 | +// 指定集合通信操作使用的设备 |
| 61 | -for (uint32_t i = 0; i < rankSize; i++) { | 61 | +for (uint32_t i = 0; i < rankSize; i++) { |
| 62 | - aclrtSetDevice(devices[i]); | 62 | + aclrtSetDevice(devices[i]); |
| 63 | -} | 63 | +} |
| 64 | -// 初始化通信域 | 64 | +// 初始化通信域 |
| 65 | -HcclCommInitAll(rankSize, devices, comms); | 65 | +HcclCommInitAll(rankSize, devices, comms); |
| 66 | -// 销毁通信域 | 66 | +// 销毁通信域 |
| 67 | -for (uint32_t i = 0; i < rankSize; i++) { | 67 | +for (uint32_t i = 0; i < rankSize; i++) { |
| 68 | - HcclCommDestroy(comms[i]); | 68 | + HcclCommDestroy(comms[i]); |
| 69 | -} | 69 | +} |
| 70 | -// 设备资源去初始化 | 70 | +// 设备资源去初始化 |
| 71 | -aclFinalize(); | 71 | +aclFinalize(); |
| 72 | -``` | 72 | +``` |
| @@ -1,54 +1,54 @@ | |||
| 1 | -# HcclCommGetHandleWithName | 1 | +# HcclCommGetHandleWithName |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | -<!-- npu="950" id1 --> | 5 | +<!-- npu="950" id1 --> |
| 6 | -- Ascend 950PR/Ascend 950DT:不支持 | 6 | +- Ascend 950PR/Ascend 950DT:不支持 |
| 7 | -<!-- end id1 --> | 7 | +<!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:支持 | 15 | +- Atlas 推理系列产品:支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:支持 | 18 | +- Atlas 训练系列产品:支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | -根据通信域名称获取指向对应通信域的句柄。 | 23 | +根据通信域名称获取指向对应通信域的句柄。 |
| 24 | - | 24 | + |
| 25 | -## 函数原型 | 25 | +## 函数原型 |
| 26 | - | 26 | + |
| 27 | -```c | 27 | +```c |
| 28 | -HcclResult HcclCommGetHandleWithName(const char* commName, HcclComm* comm) | 28 | +HcclResult HcclCommGetHandleWithName(const char* commName, HcclComm* comm) |
| 29 | -``` | 29 | +``` |
| 30 | - | 30 | + |
| 31 | -## 参数说明 | 31 | +## 参数说明 |
| 32 | - | 32 | + |
| 33 | -| 参数名 | 输入/输出 | 描述 | | 33 | +| 参数名 | 输入/输出 | 描述 | |
| 34 | -| --- | --- | --- | | 34 | +| --- | --- | --- | |
| 35 | -| commName | 输入 | 通信域名称。<br>const char*类型,最大长度支持128。 | | 35 | +| commName | 输入 | 通信域名称。<br>const char*类型,最大长度支持128。 | |
| 36 | -| comm | 输出 | 获取到的对应通信域句柄。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | | 36 | +| comm | 输出 | 获取到的对应通信域句柄。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | |
| 37 | - | 37 | + |
| 38 | -## 返回值 | 38 | +## 返回值 |
| 39 | - | 39 | + |
| 40 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 40 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 41 | - | 41 | + |
| 42 | -## 约束说明 | 42 | +## 约束说明 |
| 43 | - | 43 | + |
| 44 | -无 | 44 | +无 |
| 45 | - | 45 | + |
| 46 | -## 调用示例 | 46 | +## 调用示例 |
| 47 | - | 47 | + |
| 48 | -```c | 48 | +```c |
| 49 | -// 定义需要获取通信域句柄的通信域名称 | 49 | +// 定义需要获取通信域句柄的通信域名称 |
| 50 | -char commName[128] = "group_name_0"; | 50 | +char commName[128] = "group_name_0"; |
| 51 | -HcclComm comm; | 51 | +HcclComm comm; |
| 52 | -// 获取通信域名称对应的通信域句柄 | 52 | +// 获取通信域名称对应的通信域句柄 |
| 53 | -HcclCommGetHandleWithName(commName, &comm); | 53 | +HcclCommGetHandleWithName(commName, &comm); |
| 54 | -``` | 54 | +``` |
| @@ -1,57 +1,57 @@ | |||
| 1 | -# HcclCommGetStatus | 1 | +# HcclCommGetStatus |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | -<!-- npu="950" id1 --> | 5 | +<!-- npu="950" id1 --> |
| 6 | -- Ascend 950PR/Ascend 950DT:支持 | 6 | +- Ascend 950PR/Ascend 950DT:支持 |
| 7 | -<!-- end id1 --> | 7 | +<!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:不支持 | 15 | +- Atlas 推理系列产品:不支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:不支持 | 18 | +- Atlas 训练系列产品:不支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | -算子下发时获取通信域状态,判断能否下发算子。 | 23 | +算子下发时获取通信域状态,判断能否下发算子。 |
| 24 | - | 24 | + |
| 25 | -## 函数原型 | 25 | +## 函数原型 |
| 26 | - | 26 | + |
| 27 | -```c | 27 | +```c |
| 28 | -HcclResult HcclCommGetStatus(const char *commId, HcclCommStatus *status) | 28 | +HcclResult HcclCommGetStatus(const char *commId, HcclCommStatus *status) |
| 29 | -``` | 29 | +``` |
| 30 | - | 30 | + |
| 31 | -## 参数说明 | 31 | +## 参数说明 |
| 32 | - | 32 | + |
| 33 | -| 参数名 | 输入/输出 | 描述 | | 33 | +| 参数名 | 输入/输出 | 描述 | |
| 34 | -| --- | --- | --- | | 34 | +| --- | --- | --- | |
| 35 | -| commId | 输入 | 通信域名称。<br>const char*类型,最大长度支持128。 | | 35 | +| commId | 输入 | 通信域名称。<br>const char*类型,最大长度支持128。 | |
| 36 | -| status | 输出 | 通信域状态,HcclCommStatus类型的定义可参见[HcclCommStatus](./data_type_definition/HcclCommStatus.md)。 | | 36 | +| status | 输出 | 通信域状态,HcclCommStatus类型的定义可参见[HcclCommStatus](./data_type_definition/HcclCommStatus.md)。 | |
| 37 | - | 37 | + |
| 38 | -## 返回值 | 38 | +## 返回值 |
| 39 | - | 39 | + |
| 40 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 40 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 41 | - | 41 | + |
| 42 | -## 约束说明 | 42 | +## 约束说明 |
| 43 | - | 43 | + |
| 44 | -自定义通信算子场景使用。 | 44 | +自定义通信算子场景使用。 |
| 45 | - | 45 | + |
| 46 | -## 调用示例 | 46 | +## 调用示例 |
| 47 | - | 47 | + |
| 48 | -```c | 48 | +```c |
| 49 | -HcclComm comm; | 49 | +HcclComm comm; |
| 50 | -char commName[128]; | 50 | +char commName[128]; |
| 51 | -HcclCommStatus commStatus = HCCL_COMM_STATUS_INVALID; | 51 | +HcclCommStatus commStatus = HCCL_COMM_STATUS_INVALID; |
| 52 | - | 52 | + |
| 53 | -... //创建通信域 | 53 | +... //创建通信域 |
| 54 | - | 54 | + |
| 55 | -HCCLCHECK(HcclGetCommName(comm, commName)); | 55 | +HCCLCHECK(HcclGetCommName(comm, commName)); |
| 56 | -HCCLCHECK(HcclCommGetStatus(commName, &commStatus)); | 56 | +HCCLCHECK(HcclCommGetStatus(commName, &commStatus)); |
| 57 | -``` | 57 | +``` |
| @@ -1,69 +1,69 @@ | |||
| 1 | -# HcclCommInitAll | 1 | +# HcclCommInitAll |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | -<!-- npu="950" id1 --> | 5 | +<!-- npu="950" id1 --> |
| 6 | -- Ascend 950PR/Ascend 950DT:支持 | 6 | +- Ascend 950PR/Ascend 950DT:支持 |
| 7 | -<!-- end id1 --> | 7 | +<!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:支持 | 15 | +- Atlas 推理系列产品:支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:支持 | 18 | +- Atlas 训练系列产品:支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | -单机通信场景中,通过一个进程统一创建多张卡的通信域(其中一张卡对应一个线程)。在初始化通信域的过程中,devices\[0\]作为root rank自动收集集群信息。 | 23 | +单机通信场景中,通过一个进程统一创建多张卡的通信域(其中一张卡对应一个线程)。在初始化通信域的过程中,devices\[0\]作为root rank自动收集集群信息。 |
| 24 | - | 24 | + |
| 25 | -## 函数原型 | 25 | +## 函数原型 |
| 26 | - | 26 | + |
| 27 | -```c | 27 | +```c |
| 28 | -HcclResult HcclCommInitAll(uint32_t ndev, int32_t* devices, HcclComm* comms) | 28 | +HcclResult HcclCommInitAll(uint32_t ndev, int32_t* devices, HcclComm* comms) |
| 29 | -``` | 29 | +``` |
| 30 | - | 30 | + |
| 31 | -## 参数说明 | 31 | +## 参数说明 |
| 32 | - | 32 | + |
| 33 | -| 参数名 | 输入/输出 | 描述 | | 33 | +| 参数名 | 输入/输出 | 描述 | |
| 34 | -| --- | --- | --- | | 34 | +| --- | --- | --- | |
| 35 | -| ndev | 输入 | 通信域内的device个数。 | | 35 | +| ndev | 输入 | 通信域内的device个数。 | |
| 36 | -| devices | 输入 | 通信域中的device列表,其值为device的逻辑ID,可通过npu-smi info -m命令查询,HCCL按照devices中设置的顺序创建通信域。<br>需要注意,输入的devices列表中不能包含重复的device ID。 | | 36 | +| devices | 输入 | 通信域中的device列表,其值为device的逻辑ID,可通过npu-smi info -m命令查询,HCCL按照devices中设置的顺序创建通信域。<br>需要注意,输入的devices列表中不能包含重复的device ID。 | |
| 37 | -| comms | 输出 | 生成的通信域句柄数组,其大小为:ndev * sizeof(HcclComm)。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | | 37 | +| comms | 输出 | 生成的通信域句柄数组,其大小为:ndev * sizeof(HcclComm)。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | |
| 38 | - | 38 | + |
| 39 | -## 返回值 | 39 | +## 返回值 |
| 40 | - | 40 | + |
| 41 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 41 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 42 | - | 42 | + |
| 43 | -## 约束说明 | 43 | +## 约束说明 |
| 44 | - | 44 | + |
| 45 | -- 该接口仅支持单机通信场景使用,不支持多机通信场景。 | 45 | +- 该接口仅支持单机通信场景使用,不支持多机通信场景。 |
| 46 | -- 多线程调用通信操作API时(例如HcclAllReduce等),用户需确保不同线程中调用通信操作API的前后时间差不超过环境变量[HCCL_CONNECT_TIMEOUT](https://gitcode.com/cann/hccl/blob/master/docs/zh/user_guide/hccl_env/HCCL_CONNECT_TIMEOUT.md)的时间,避免建链超时。 | 46 | +- 多线程调用通信操作API时(例如HcclAllReduce等),用户需确保不同线程中调用通信操作API的前后时间差不超过环境变量[HCCL_CONNECT_TIMEOUT](https://gitcode.com/cann/hccl/blob/master/docs/zh/user_guide/hccl_env/HCCL_CONNECT_TIMEOUT.md)的时间,避免建链超时。 |
| 47 | -- 不支持一张卡同时调用多个通信操作API。 | 47 | +- 不支持一张卡同时调用多个通信操作API。 |
| 48 | - | 48 | + |
| 49 | -## 调用示例 | 49 | +## 调用示例 |
| 50 | - | 50 | + |
| 51 | -```c | 51 | +```c |
| 52 | -// 设备资源初始化 | 52 | +// 设备资源初始化 |
| 53 | -aclInit(NULL); | 53 | +aclInit(NULL); |
| 54 | -uint32_t rankSize = 2; | 54 | +uint32_t rankSize = 2; |
| 55 | -int32_t devices[rankSize] = {0, 1}; | 55 | +int32_t devices[rankSize] = {0, 1}; |
| 56 | -HcclComm comms[rankSize]; | 56 | +HcclComm comms[rankSize]; |
| 57 | -// 指定集合通信操作使用的设备 | 57 | +// 指定集合通信操作使用的设备 |
| 58 | -for (uint32_t i = 0; i < rankSize; i++) { | 58 | +for (uint32_t i = 0; i < rankSize; i++) { |
| 59 | - aclrtSetDevice(devices[i]); | 59 | + aclrtSetDevice(devices[i]); |
| 60 | -} | 60 | +} |
| 61 | -// 初始化通信域 | 61 | +// 初始化通信域 |
| 62 | -HcclCommInitAll(rankSize, devices, comms); | 62 | +HcclCommInitAll(rankSize, devices, comms); |
| 63 | -// 销毁通信域 | 63 | +// 销毁通信域 |
| 64 | -for (uint32_t i = 0; i < rankSize; i++) { | 64 | +for (uint32_t i = 0; i < rankSize; i++) { |
| 65 | - HcclCommDestroy(comms[i]); | 65 | + HcclCommDestroy(comms[i]); |
| 66 | -} | 66 | +} |
| 67 | -// 设备资源去初始化 | 67 | +// 设备资源去初始化 |
| 68 | -aclFinalize(); | 68 | +aclFinalize(); |
| 69 | -``` | 69 | +``` |
| @@ -1,67 +1,67 @@ | |||
| 1 | -# HcclCommInitClusterInfo | 1 | +# HcclCommInitClusterInfo |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | -<!-- npu="950" id1 --> | 5 | +<!-- npu="950" id1 --> |
| 6 | -- Ascend 950PR/Ascend 950DT:支持 | 6 | +- Ascend 950PR/Ascend 950DT:支持 |
| 7 | -<!-- end id1 --> | 7 | +<!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:支持 | 15 | +- Atlas 推理系列产品:支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:支持 | 18 | +- Atlas 训练系列产品:支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | -基于rank table初始化HCCL,创建HCCL通信域。 | 23 | +基于rank table初始化HCCL,创建HCCL通信域。 |
| 24 | - | 24 | + |
| 25 | -rank table文件是一个JSON格式的文件,配置了参与集合通信的NPU资源信息,关于rank table文件的配置可参见[集群信息配置](https://gitcode.com/cann/hccl/blob/master/docs/zh/user_guide/cluster_info_config/README.md)。 | 25 | +rank table文件是一个JSON格式的文件,配置了参与集合通信的NPU资源信息,关于rank table文件的配置可参见[集群信息配置](https://gitcode.com/cann/hccl/blob/master/docs/zh/user_guide/cluster_info_config/README.md)。 |
| 26 | - | 26 | + |
| 27 | -## 函数原型 | 27 | +## 函数原型 |
| 28 | - | 28 | + |
| 29 | -```c | 29 | +```c |
| 30 | -HcclResult HcclCommInitClusterInfo(const char *clusterInfo, uint32_t rank, HcclComm *comm) | 30 | +HcclResult HcclCommInitClusterInfo(const char *clusterInfo, uint32_t rank, HcclComm *comm) |
| 31 | -``` | 31 | +``` |
| 32 | - | 32 | + |
| 33 | -## 参数说明 | 33 | +## 参数说明 |
| 34 | - | 34 | + |
| 35 | -| 参数名 | 输入/输出 | 描述 | | 35 | +| 参数名 | 输入/输出 | 描述 | |
| 36 | -| --- | --- | --- | | 36 | +| --- | --- | --- | |
| 37 | -| clusterInfo | 输入 | rank table的文件路径(含文件名),作为字符串最大长度为4096字节,含结束符。 | | 37 | +| clusterInfo | 输入 | rank table的文件路径(含文件名),作为字符串最大长度为4096字节,含结束符。 | |
| 38 | -| rank | 输入 | 本rank的id。<br>需要注意,此参数取值需要与rank table中对应的“rank_id”字段取值一致。 | | 38 | +| rank | 输入 | 本rank的id。<br>需要注意,此参数取值需要与rank table中对应的“rank_id”字段取值一致。 | |
| 39 | -| comm | 输出 | 将初始化后的通信域以指针的信息回传给调用者。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | | 39 | +| comm | 输出 | 将初始化后的通信域以指针的信息回传给调用者。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | |
| 40 | - | 40 | + |
| 41 | -## 返回值 | 41 | +## 返回值 |
| 42 | - | 42 | + |
| 43 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 43 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 44 | - | 44 | + |
| 45 | -## 约束说明 | 45 | +## 约束说明 |
| 46 | - | 46 | + |
| 47 | -重复初始化会报错。 | 47 | +重复初始化会报错。 |
| 48 | - | 48 | + |
| 49 | -## 调用示例 | 49 | +## 调用示例 |
| 50 | - | 50 | + |
| 51 | -```c | 51 | +```c |
| 52 | -// 设备资源初始化 | 52 | +// 设备资源初始化 |
| 53 | -aclInit(NULL); | 53 | +aclInit(NULL); |
| 54 | -// rank table配置文件路径 | 54 | +// rank table配置文件路径 |
| 55 | -char *rankTableFile = "/path/rank_table.json"; | 55 | +char *rankTableFile = "/path/rank_table.json"; |
| 56 | -// 指定集合通信操作使用的Device ID | 56 | +// 指定集合通信操作使用的Device ID |
| 57 | -uint32_t devId = 0; | 57 | +uint32_t devId = 0; |
| 58 | -aclrtSetDevice(devId); | 58 | +aclrtSetDevice(devId); |
| 59 | -// 创建通信域 | 59 | +// 创建通信域 |
| 60 | -HcclComm hcclComm; | 60 | +HcclComm hcclComm; |
| 61 | -// 此样例以devId作为当前rank的rank id | 61 | +// 此样例以devId作为当前rank的rank id |
| 62 | -HcclCommInitClusterInfo(rankTableFile, devId, &hcclComm); | 62 | +HcclCommInitClusterInfo(rankTableFile, devId, &hcclComm); |
| 63 | -// 销毁通信域 | 63 | +// 销毁通信域 |
| 64 | -HcclCommDestroy(hcclComm); | 64 | +HcclCommDestroy(hcclComm); |
| 65 | -// 设备资源去初始化 | 65 | +// 设备资源去初始化 |
| 66 | -aclFinalize(); | 66 | +aclFinalize(); |
| 67 | -``` | 67 | +``` |
| @@ -1,74 +1,74 @@ | |||
| 1 | -# HcclCommInitClusterInfoConfig | 1 | +# HcclCommInitClusterInfoConfig |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | -<!-- npu="950" id1 --> | 5 | +<!-- npu="950" id1 --> |
| 6 | -- Ascend 950PR/Ascend 950DT:支持 | 6 | +- Ascend 950PR/Ascend 950DT:支持 |
| 7 | -<!-- end id1 --> | 7 | +<!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:支持 | 15 | +- Atlas 推理系列产品:支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:支持 | 18 | +- Atlas 训练系列产品:支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | -基于rank table初始化HCCL,创建具有特定配置的HCCL通信域。 | 23 | +基于rank table初始化HCCL,创建具有特定配置的HCCL通信域。 |
| 24 | - | 24 | + |
| 25 | -## 函数原型 | 25 | +## 函数原型 |
| 26 | - | 26 | + |
| 27 | -```c | 27 | +```c |
| 28 | -HcclResult HcclCommInitClusterInfoConfig(const char *clusterInfo, uint32_t rank, HcclCommConfig *config, HcclComm *comm) | 28 | +HcclResult HcclCommInitClusterInfoConfig(const char *clusterInfo, uint32_t rank, HcclCommConfig *config, HcclComm *comm) |
| 29 | -``` | 29 | +``` |
| 30 | - | 30 | + |
| 31 | -## 参数说明 | 31 | +## 参数说明 |
| 32 | - | 32 | + |
| 33 | -| 参数名 | 输入/输出 | 描述 | | 33 | +| 参数名 | 输入/输出 | 描述 | |
| 34 | -| --- | --- | --- | | 34 | +| --- | --- | --- | |
| 35 | -| clusterInfo | 输入 | rank table文件路径(含文件名),作为字符串最大长度为4096字节,含结束符。 | | 35 | +| clusterInfo | 输入 | rank table文件路径(含文件名),作为字符串最大长度为4096字节,含结束符。 | |
| 36 | -| rank | 输入 | 本rank的id。<br>需要注意,此参数取值需要与rank table中对应的“rank_id”字段取值一致。 | | 36 | +| rank | 输入 | 本rank的id。<br>需要注意,此参数取值需要与rank table中对应的“rank_id”字段取值一致。 | |
| 37 | -| config | 输入 | 通信域配置项,包括buffer大小、确定性计算开关、通信域名称、通信算子展开模式等信息,配置参数需确保在合法值域内,关于HcclCommConfig中的详细参数含义及优先级可参见[HcclCommConfig](./data_type_definition/HcclCommConfig.md)的定义。<br>需要注意:传入的config必须先调用[HcclCommConfigInit](HcclCommConfigInit.md)对其进行初始化。 | | 37 | +| config | 输入 | 通信域配置项,包括buffer大小、确定性计算开关、通信域名称、通信算子展开模式等信息,配置参数需确保在合法值域内,关于HcclCommConfig中的详细参数含义及优先级可参见[HcclCommConfig](./data_type_definition/HcclCommConfig.md)的定义。<br>需要注意:传入的config必须先调用[HcclCommConfigInit](HcclCommConfigInit.md)对其进行初始化。 | |
| 38 | -| comm | 输出 | 将初始化后的通信域以指针的信息回传给调用者。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | | 38 | +| comm | 输出 | 将初始化后的通信域以指针的信息回传给调用者。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | |
| 39 | - | 39 | + |
| 40 | -## 返回值 | 40 | +## 返回值 |
| 41 | - | 41 | + |
| 42 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 42 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 43 | - | 43 | + |
| 44 | -## 约束说明 | 44 | +## 约束说明 |
| 45 | - | 45 | + |
| 46 | -同一通信域不支持重复初始化。 | 46 | +同一通信域不支持重复初始化。 |
| 47 | - | 47 | + |
| 48 | -## 调用示例 | 48 | +## 调用示例 |
| 49 | - | 49 | + |
| 50 | -```c | 50 | +```c |
| 51 | -// 设备资源初始化 | 51 | +// 设备资源初始化 |
| 52 | -aclInit(NULL); | 52 | +aclInit(NULL); |
| 53 | -// rank table配置文件路径 | 53 | +// rank table配置文件路径 |
| 54 | -const char *rankTableFile = "/path/to/rank_table.json"; | 54 | +const char *rankTableFile = "/path/to/rank_table.json"; |
| 55 | -// 指定集合通信操作使用的设备 | 55 | +// 指定集合通信操作使用的设备 |
| 56 | -uint32_t rankSize = 8; | 56 | +uint32_t rankSize = 8; |
| 57 | -uint32_t devId = 0; | 57 | +uint32_t devId = 0; |
| 58 | -aclrtSetDevice(devId); | 58 | +aclrtSetDevice(devId); |
| 59 | -// 创建并初始化通信域配置项 | 59 | +// 创建并初始化通信域配置项 |
| 60 | -HcclCommConfig config; | 60 | +HcclCommConfig config; |
| 61 | -HcclCommConfigInit(&config); | 61 | +HcclCommConfigInit(&config); |
| 62 | -// 按需修改通信域配置 | 62 | +// 按需修改通信域配置 |
| 63 | -config.hcclBufferSize = 50; // 共享数据的缓存区大小,单位为:MB,取值需 >= 1,默认值为:200 | 63 | +config.hcclBufferSize = 50; // 共享数据的缓存区大小,单位为:MB,取值需 >= 1,默认值为:200 |
| 64 | -strncpy(config.hcclCommName, "comm_1", COMM_NAME_MAX_LENGTH - 1); | 64 | +strncpy(config.hcclCommName, "comm_1", COMM_NAME_MAX_LENGTH - 1); |
| 65 | -config.hcclCommName[COMM_NAME_MAX_LENGTH - 1] = '\0'; | 65 | +config.hcclCommName[COMM_NAME_MAX_LENGTH - 1] = '\0'; |
| 66 | -// 初始化通信域 | 66 | +// 初始化通信域 |
| 67 | -HcclComm hcclComm; | 67 | +HcclComm hcclComm; |
| 68 | -// 此样例以devId作为当前rank的rank id | 68 | +// 此样例以devId作为当前rank的rank id |
| 69 | -HcclCommInitClusterInfoConfig(rankTableFile, devId, &config, &hcclComm); | 69 | +HcclCommInitClusterInfoConfig(rankTableFile, devId, &config, &hcclComm); |
| 70 | -// 销毁通信域 | 70 | +// 销毁通信域 |
| 71 | -HcclCommDestroy(hcclComm); | 71 | +HcclCommDestroy(hcclComm); |
| 72 | -// 设备资源去初始化 | 72 | +// 设备资源去初始化 |
| 73 | -aclFinalize(); | 73 | +aclFinalize(); |
| 74 | -``` | 74 | +``` |
| @@ -1,67 +1,67 @@ | |||
| 1 | -# HcclCommInitRootInfo | 1 | +# HcclCommInitRootInfo |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | -<!-- npu="950" id1 --> | 5 | +<!-- npu="950" id1 --> |
| 6 | -- Ascend 950PR/Ascend 950DT:支持 | 6 | +- Ascend 950PR/Ascend 950DT:支持 |
| 7 | -<!-- end id1 --> | 7 | +<!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:支持 | 15 | +- Atlas 推理系列产品:支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:支持 | 18 | +- Atlas 训练系列产品:支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | -根据rootInfo初始化HCCL,创建HCCL通信域。 | 23 | +根据rootInfo初始化HCCL,创建HCCL通信域。 |
| 24 | - | 24 | + |
| 25 | -该接口在同一进程内支持多线程并发调用,但仅支持单卡单线程的场景,若是单卡多线程,不支持并发调用。 | 25 | +该接口在同一进程内支持多线程并发调用,但仅支持单卡单线程的场景,若是单卡多线程,不支持并发调用。 |
| 26 | - | 26 | + |
| 27 | -如下图所示,不支持step0与step1并发调用,需要step0执行结束后,再串行执行step1。 | 27 | +如下图所示,不支持step0与step1并发调用,需要step0执行结束后,再串行执行step1。 |
| 28 | - | 28 | + |
| 29 | - | 29 | + |
| 30 | - | 30 | + |
| 31 | -## 函数原型 | 31 | +## 函数原型 |
| 32 | - | 32 | + |
| 33 | -```c | 33 | +```c |
| 34 | -HcclResult HcclCommInitRootInfo(uint32_t nRanks, const HcclRootInfo *rootInfo, uint32_t rank, HcclComm *comm) | 34 | +HcclResult HcclCommInitRootInfo(uint32_t nRanks, const HcclRootInfo *rootInfo, uint32_t rank, HcclComm *comm) |
| 35 | -``` | 35 | +``` |
| 36 | - | 36 | + |
| 37 | -## 参数说明 | 37 | +## 参数说明 |
| 38 | - | 38 | + |
| 39 | -| 参数名 | 输入/输出 | 描述 | | 39 | +| 参数名 | 输入/输出 | 描述 | |
| 40 | -| --- | --- | --- | | 40 | +| --- | --- | --- | |
| 41 | -| nRanks | 输入 | 集群中的rank数量。 | | 41 | +| nRanks | 输入 | 集群中的rank数量。 | |
| 42 | -| rootInfo | 输入 | root rank信息,主要包含root rank的ip、id等信息,由[HcclGetRootInfo](HcclGetRootInfo.md)接口生成。 | | 42 | +| rootInfo | 输入 | root rank信息,主要包含root rank的ip、id等信息,由[HcclGetRootInfo](HcclGetRootInfo.md)接口生成。 | |
| 43 | -| rank | 输入 | 本rank的rank id。 | | 43 | +| rank | 输入 | 本rank的rank id。 | |
| 44 | -| comm | 输出 | 初始化后的通信域指针。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | | 44 | +| comm | 输出 | 初始化后的通信域指针。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | |
| 45 | - | 45 | + |
| 46 | -## 返回值 | 46 | +## 返回值 |
| 47 | - | 47 | + |
| 48 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 48 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 49 | - | 49 | + |
| 50 | -## 约束说明 | 50 | +## 约束说明 |
| 51 | - | 51 | + |
| 52 | -同一通信域中所有rank的nRanks、rootInfo均应相同。 | 52 | +同一通信域中所有rank的nRanks、rootInfo均应相同。 |
| 53 | - | 53 | + |
| 54 | -## 调用示例 | 54 | +## 调用示例 |
| 55 | - | 55 | + |
| 56 | -```c | 56 | +```c |
| 57 | -uint32_t rankSize = 8; | 57 | +uint32_t rankSize = 8; |
| 58 | -uint32_t deviceId = 0; | 58 | +uint32_t deviceId = 0; |
| 59 | -// 生成root节点的rank标识信息 | 59 | +// 生成root节点的rank标识信息 |
| 60 | -HcclRootInfo rootInfo; | 60 | +HcclRootInfo rootInfo; |
| 61 | -HcclGetRootInfo(&rootInfo); | 61 | +HcclGetRootInfo(&rootInfo); |
| 62 | -// 初始化通信域 | 62 | +// 初始化通信域 |
| 63 | -HcclComm hcclComm; | 63 | +HcclComm hcclComm; |
| 64 | -HcclCommInitRootInfo(rankSize, &rootInfo, deviceId, &hcclComm); | 64 | +HcclCommInitRootInfo(rankSize, &rootInfo, deviceId, &hcclComm); |
| 65 | -// 销毁通信域 | 65 | +// 销毁通信域 |
| 66 | -HcclCommDestroy(hcclComm); | 66 | +HcclCommDestroy(hcclComm); |
| 67 | -``` | 67 | +``` |
| @@ -1,77 +1,77 @@ | |||
| 1 | -# HcclCommInitRootInfoConfig | 1 | +# HcclCommInitRootInfoConfig |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | -<!-- npu="950" id1 --> | 5 | +<!-- npu="950" id1 --> |
| 6 | -- Ascend 950PR/Ascend 950DT:支持 | 6 | +- Ascend 950PR/Ascend 950DT:支持 |
| 7 | -<!-- end id1 --> | 7 | +<!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:支持 | 15 | +- Atlas 推理系列产品:支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:支持 | 18 | +- Atlas 训练系列产品:支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | -根据rootInfo初始化HCCL,创建具有特定配置的HCCL通信域。 | 23 | +根据rootInfo初始化HCCL,创建具有特定配置的HCCL通信域。 |
| 24 | - | 24 | + |
| 25 | -该接口在同一进程内支持多线程并发调用,但仅支持单卡单线程的场景,若是单卡多线程,不支持并发调用。 | 25 | +该接口在同一进程内支持多线程并发调用,但仅支持单卡单线程的场景,若是单卡多线程,不支持并发调用。 |
| 26 | - | 26 | + |
| 27 | -如下图所示,不支持step0与step1并发调用,需要step0执行结束后,再串行执行step1。 | 27 | +如下图所示,不支持step0与step1并发调用,需要step0执行结束后,再串行执行step1。 |
| 28 | - | 28 | + |
| 29 | - | 29 | + |
| 30 | - | 30 | + |
| 31 | -## 函数原型 | 31 | +## 函数原型 |
| 32 | - | 32 | + |
| 33 | -```c | 33 | +```c |
| 34 | -HcclResult HcclCommInitRootInfoConfig(uint32_t nRanks, const HcclRootInfo *rootInfo, uint32_t rank, const HcclCommConfig *config, HcclComm *comm) | 34 | +HcclResult HcclCommInitRootInfoConfig(uint32_t nRanks, const HcclRootInfo *rootInfo, uint32_t rank, const HcclCommConfig *config, HcclComm *comm) |
| 35 | -``` | 35 | +``` |
| 36 | - | 36 | + |
| 37 | -## 参数说明 | 37 | +## 参数说明 |
| 38 | - | 38 | + |
| 39 | -| 参数名 | 输入/输出 | 描述 | | 39 | +| 参数名 | 输入/输出 | 描述 | |
| 40 | -| --- | --- | --- | | 40 | +| --- | --- | --- | |
| 41 | -| nRanks | 输入 | 集群中的rank数量。 | | 41 | +| nRanks | 输入 | 集群中的rank数量。 | |
| 42 | -| rootInfo | 输入 | root rank信息,主要包含root rank的ip、id等信息,由[HcclGetRootInfo](HcclGetRootInfo.md)接口生成。 | | 42 | +| rootInfo | 输入 | root rank信息,主要包含root rank的ip、id等信息,由[HcclGetRootInfo](HcclGetRootInfo.md)接口生成。 | |
| 43 | -| rank | 输入 | 本rank的rank id。 | | 43 | +| rank | 输入 | 本rank的rank id。 | |
| 44 | -| config | 输入 | 通信域配置项,包括buffer大小、确定性计算开关、通信域名称、通信算子展开模式等信息,配置参数需确保在合法值域内,关于HcclCommConfig中的详细参数含义及优先级可参见[HcclCommConfig](./data_type_definition/HcclCommConfig.md)的定义。<br>需要注意:传入的config必须先调用[HcclCommConfigInit](HcclCommConfigInit.md)对其进行初始化。 | | 44 | +| config | 输入 | 通信域配置项,包括buffer大小、确定性计算开关、通信域名称、通信算子展开模式等信息,配置参数需确保在合法值域内,关于HcclCommConfig中的详细参数含义及优先级可参见[HcclCommConfig](./data_type_definition/HcclCommConfig.md)的定义。<br>需要注意:传入的config必须先调用[HcclCommConfigInit](HcclCommConfigInit.md)对其进行初始化。 | |
| 45 | -| comm | 输出 | 初始化后的通信域指针。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | | 45 | +| comm | 输出 | 初始化后的通信域指针。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | |
| 46 | - | 46 | + |
| 47 | -## 返回值 | 47 | +## 返回值 |
| 48 | - | 48 | + |
| 49 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 49 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 50 | - | 50 | + |
| 51 | -## 约束说明 | 51 | +## 约束说明 |
| 52 | - | 52 | + |
| 53 | -同一通信域中所有rank的nRanks、rootInfo、config均应相同。 | 53 | +同一通信域中所有rank的nRanks、rootInfo、config均应相同。 |
| 54 | - | 54 | + |
| 55 | -## 调用示例 | 55 | +## 调用示例 |
| 56 | - | 56 | + |
| 57 | -```c | 57 | +```c |
| 58 | -uint32_t rankSize = 8; | 58 | +uint32_t rankSize = 8; |
| 59 | -uint32_t deviceId = 0; | 59 | +uint32_t deviceId = 0; |
| 60 | -// 生成root节点的rank标识信息 | 60 | +// 生成root节点的rank标识信息 |
| 61 | -HcclRootInfo rootInfo; | 61 | +HcclRootInfo rootInfo; |
| 62 | -HcclGetRootInfo(&rootInfo); | 62 | +HcclGetRootInfo(&rootInfo); |
| 63 | - | 63 | + |
| 64 | -// 创建并初始化通信域配置项 | 64 | +// 创建并初始化通信域配置项 |
| 65 | -HcclCommConfig config; | 65 | +HcclCommConfig config; |
| 66 | -HcclCommConfigInit(&config); | 66 | +HcclCommConfigInit(&config); |
| 67 | -// 按需修改通信域配置 | 67 | +// 按需修改通信域配置 |
| 68 | -config.hcclBufferSize = 1024; // 共享数据的缓存区大小,单位为:MB,取值需 >= 1,默认值为:200 | 68 | +config.hcclBufferSize = 1024; // 共享数据的缓存区大小,单位为:MB,取值需 >= 1,默认值为:200 |
| 69 | -config.hcclDeterministic = 1; // 开启归约类通信算子的确定性计算,默认值为:0,表示关闭确定性计算功能 | 69 | +config.hcclDeterministic = 1; // 开启归约类通信算子的确定性计算,默认值为:0,表示关闭确定性计算功能 |
| 70 | -std::strcpy(config.hcclCommName, "comm_1"); | 70 | +std::strcpy(config.hcclCommName, "comm_1"); |
| 71 | -// 初始化集合通信域 | 71 | +// 初始化集合通信域 |
| 72 | -HcclComm hcclComm; | 72 | +HcclComm hcclComm; |
| 73 | -HCCLCHECK(HcclCommInitRootInfoConfig(rankSize, &rootInfo, deviceId, &config, &hcclComm)); | 73 | +HCCLCHECK(HcclCommInitRootInfoConfig(rankSize, &rootInfo, deviceId, &config, &hcclComm)); |
| 74 | - | 74 | + |
| 75 | -// 销毁通信域 | 75 | +// 销毁通信域 |
| 76 | -HcclCommDestroy(hcclComm); | 76 | +HcclCommDestroy(hcclComm); |
| 77 | -``` | 77 | +``` |
| @@ -1,66 +1,66 @@ | |||
| 1 | -# HcclCommResume | 1 | +# HcclCommResume |
| 2 | - | 2 | + |
| 3 | -> [!NOTE]说明 | 3 | +> [!NOTE]说明 |
| 4 | -> 本接口为预留接口,后续有可能变更,不支持开发者使用。 | 4 | +> 本接口为预留接口,后续有可能变更,不支持开发者使用。 |
| 5 | - | 5 | + |
| 6 | -## 产品支持情况 | 6 | +## 产品支持情况 |
| 7 | - | 7 | + |
| 8 | -<!-- npu="950" id1 --> | 8 | +<!-- npu="950" id1 --> |
| 9 | -- Ascend 950PR/Ascend 950DT:支持 | 9 | +- Ascend 950PR/Ascend 950DT:支持 |
| 10 | -<!-- end id1 --> | 10 | +<!-- end id1 --> |
| 11 | -<!-- npu="A3" id2 --> | 11 | +<!-- npu="A3" id2 --> |
| 12 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 12 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 13 | -<!-- end id2 --> | 13 | +<!-- end id2 --> |
| 14 | -<!-- npu="910b" id3 --> | 14 | +<!-- npu="910b" id3 --> |
| 15 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 | 15 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 |
| 16 | -<!-- end id3 --> | 16 | +<!-- end id3 --> |
| 17 | -<!-- npu="310p" id4 --> | 17 | +<!-- npu="310p" id4 --> |
| 18 | -- Atlas 推理系列产品:不支持 | 18 | +- Atlas 推理系列产品:不支持 |
| 19 | -<!-- end id4 --> | 19 | +<!-- end id4 --> |
| 20 | -<!-- npu="910" id5 --> | 20 | +<!-- npu="910" id5 --> |
| 21 | -- Atlas 训练系列产品:不支持 | 21 | +- Atlas 训练系列产品:不支持 |
| 22 | -<!-- end id5 --> | 22 | +<!-- end id5 --> |
| 23 | - | 23 | + |
| 24 | -## 功能说明 | 24 | +## 功能说明 |
| 25 | - | 25 | + |
| 26 | -本接口用于恢复通信域的状态。 | 26 | +本接口用于恢复通信域的状态。 |
| 27 | - | 27 | + |
| 28 | -若开发者调用[HcclCommSuspend](HcclCommSuspend.md)接口或者acl提供的aclrtDeviceTaskAbort接口挂起了通信域,故障恢复后,需要调用本接口将通信域恢复为正常状态。 | 28 | +若开发者调用[HcclCommSuspend](HcclCommSuspend.md)接口或者acl提供的aclrtDeviceTaskAbort接口挂起了通信域,故障恢复后,需要调用本接口将通信域恢复为正常状态。 |
| 29 | - | 29 | + |
| 30 | -## 函数原型 | 30 | +## 函数原型 |
| 31 | - | 31 | + |
| 32 | -```c | 32 | +```c |
| 33 | -HcclResult HcclCommResume(HcclComm comm) | 33 | +HcclResult HcclCommResume(HcclComm comm) |
| 34 | -``` | 34 | +``` |
| 35 | - | 35 | + |
| 36 | -## 参数说明 | 36 | +## 参数说明 |
| 37 | - | 37 | + |
| 38 | -| 参数名 | 输入/输出 | 描述 | | 38 | +| 参数名 | 输入/输出 | 描述 | |
| 39 | -| --- | --- | --- | | 39 | +| --- | --- | --- | |
| 40 | -| comm | 输入 | 需要从挂起状态恢复为正常状态的通信域。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | | 40 | +| comm | 输入 | 需要从挂起状态恢复为正常状态的通信域。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | |
| 41 | - | 41 | + |
| 42 | -## 返回值 | 42 | +## 返回值 |
| 43 | - | 43 | + |
| 44 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 44 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 45 | - | 45 | + |
| 46 | -## 约束说明 | 46 | +## 约束说明 |
| 47 | - | 47 | + |
| 48 | -- 调用本接口前,需要调用acl提供的aclrtDeviceTaskAbort接口停止本Device上的任务执行。 | 48 | +- 调用本接口前,需要调用acl提供的aclrtDeviceTaskAbort接口停止本Device上的任务执行。 |
| 49 | -- 调用本接口恢复通信域状态前,需要进行一次集群同步操作。 | 49 | +- 调用本接口恢复通信域状态前,需要进行一次集群同步操作。 |
| 50 | - | 50 | + |
| 51 | -## 调用示例 | 51 | +## 调用示例 |
| 52 | - | 52 | + |
| 53 | -```c | 53 | +```c |
| 54 | -uint32_t rankSize = 8; | 54 | +uint32_t rankSize = 8; |
| 55 | -uint32_t deviceId = 0; | 55 | +uint32_t deviceId = 0; |
| 56 | -// 生成root节点的rank标识信息 | 56 | +// 生成root节点的rank标识信息 |
| 57 | -HcclRootInfo rootInfo; | 57 | +HcclRootInfo rootInfo; |
| 58 | -HCCLCHECK(HcclGetRootInfo(&rootInfo)); | 58 | +HCCLCHECK(HcclGetRootInfo(&rootInfo)); |
| 59 | -// 初始化通信域 | 59 | +// 初始化通信域 |
| 60 | -HcclComm hcclComm; | 60 | +HcclComm hcclComm; |
| 61 | -HCCLCHECK(HcclCommInitRootInfo(rankSize, &rootInfo, deviceId, &hcclComm)); | 61 | +HCCLCHECK(HcclCommInitRootInfo(rankSize, &rootInfo, deviceId, &hcclComm)); |
| 62 | -// 假设通信域已通过HcclCommSuspend接口或者acl提供的aclrtDeviceTaskAbort接口被挂起,恢复通信域 | 62 | +// 假设通信域已通过HcclCommSuspend接口或者acl提供的aclrtDeviceTaskAbort接口被挂起,恢复通信域 |
| 63 | -HCCLCHECK(HcclCommResume(hcclComm)); | 63 | +HCCLCHECK(HcclCommResume(hcclComm)); |
| 64 | -// 销毁通信域 | 64 | +// 销毁通信域 |
| 65 | -HCCLCHECK(HcclCommDestroy(hcclComm)); | 65 | +HCCLCHECK(HcclCommDestroy(hcclComm)); |
| 66 | -``` | 66 | +``` |
| @@ -1,82 +1,82 @@ | |||
| 1 | -# HcclCommSetMemoryRange | 1 | +# HcclCommSetMemoryRange |
| 2 | - | 2 | + |
| 3 | -> [!NOTE]说明 | 3 | +> [!NOTE]说明 |
| 4 | -> 本接口为试用接口,后续可能存在变更,暂不支持应用于生产环境。 | 4 | +> 本接口为试用接口,后续可能存在变更,暂不支持应用于生产环境。 |
| 5 | - | 5 | + |
| 6 | -## 产品支持情况 | 6 | +## 产品支持情况 |
| 7 | - | 7 | + |
| 8 | -<!-- npu="950" id1 --> | 8 | +<!-- npu="950" id1 --> |
| 9 | -- Ascend 950PR/Ascend 950DT:不支持 | 9 | +- Ascend 950PR/Ascend 950DT:不支持 |
| 10 | -<!-- end id1 --> | 10 | +<!-- end id1 --> |
| 11 | -<!-- npu="A3" id2 --> | 11 | +<!-- npu="A3" id2 --> |
| 12 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 12 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 13 | -<!-- end id2 --> | 13 | +<!-- end id2 --> |
| 14 | -<!-- npu="910b" id3 --> | 14 | +<!-- npu="910b" id3 --> |
| 15 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 | 15 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 |
| 16 | -<!-- end id3 --> | 16 | +<!-- end id3 --> |
| 17 | -<!-- npu="310p" id4 --> | 17 | +<!-- npu="310p" id4 --> |
| 18 | -- Atlas 推理系列产品:不支持 | 18 | +- Atlas 推理系列产品:不支持 |
| 19 | -<!-- end id4 --> | 19 | +<!-- end id4 --> |
| 20 | -<!-- npu="910" id5 --> | 20 | +<!-- npu="910" id5 --> |
| 21 | -- Atlas 训练系列产品:不支持 | 21 | +- Atlas 训练系列产品:不支持 |
| 22 | -<!-- end id5 --> | 22 | +<!-- end id5 --> |
| 23 | - | 23 | + |
| 24 | -## 功能说明 | 24 | +## 功能说明 |
| 25 | - | 25 | + |
| 26 | -用户通过aclrtReserveMemAddress接口成功申请虚拟内存后,可调用此接口通知HCCL预留的虚拟内存地址。调用此接口后,该虚拟内存对当前进程中的所有通信域可见。 | 26 | +用户通过aclrtReserveMemAddress接口成功申请虚拟内存后,可调用此接口通知HCCL预留的虚拟内存地址。调用此接口后,该虚拟内存对当前进程中的所有通信域可见。 |
| 27 | - | 27 | + |
| 28 | -## 函数原型 | 28 | +## 函数原型 |
| 29 | - | 29 | + |
| 30 | -```c | 30 | +```c |
| 31 | -HcclResult HcclCommSetMemoryRange(HcclComm comm, void *baseVirPtr, size_t size, size_t alignment, uint64_t flags) | 31 | +HcclResult HcclCommSetMemoryRange(HcclComm comm, void *baseVirPtr, size_t size, size_t alignment, uint64_t flags) |
| 32 | -``` | 32 | +``` |
| 33 | - | 33 | + |
| 34 | -## 参数说明 | 34 | +## 参数说明 |
| 35 | - | 35 | + |
| 36 | -| 参数名 | 输入/输出 | 描述 | | 36 | +| 参数名 | 输入/输出 | 描述 | |
| 37 | -| --- | --- | --- | | 37 | +| --- | --- | --- | |
| 38 | -| comm | 输入 | HCCL通信域,建议使用Server内最大的通信域,即覆盖最大卡数的通信域。 | | 38 | +| comm | 输入 | HCCL通信域,建议使用Server内最大的通信域,即覆盖最大卡数的通信域。 | |
| 39 | -| baseVirPtr | 输入 | 需要预留的虚拟内存基地址,即aclrtReserveMemAddress接口输出的虚拟内存地址。 | | 39 | +| baseVirPtr | 输入 | 需要预留的虚拟内存基地址,即aclrtReserveMemAddress接口输出的虚拟内存地址。 | |
| 40 | -| size | 输入 | 虚拟内存的大小,单位:Byte。 | | 40 | +| size | 输入 | 虚拟内存的大小,单位:Byte。 | |
| 41 | -| alignment | 输入 | 预留字段。<br>当前仅支持配置为“0”。 | | 41 | +| alignment | 输入 | 预留字段。<br>当前仅支持配置为“0”。 | |
| 42 | -| flags | 输入 | 预留字段。<br>当前仅支持配置为“0”。 | | 42 | +| flags | 输入 | 预留字段。<br>当前仅支持配置为“0”。 | |
| 43 | - | 43 | + |
| 44 | -## 返回值 | 44 | +## 返回值 |
| 45 | - | 45 | + |
| 46 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 46 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 47 | - | 47 | + |
| 48 | -## 约束说明 | 48 | +## 约束说明 |
| 49 | - | 49 | + |
| 50 | -- 该接口在通信域内首次被调用时会进行建链操作,因此用户首次调用该接口时需确保通信域内所有进程均调用该接口,且调用时刻相同,避免建链超时。后续再调用该接口时,无此约束。 | 50 | +- 该接口在通信域内首次被调用时会进行建链操作,因此用户首次调用该接口时需确保通信域内所有进程均调用该接口,且调用时刻相同,避免建链超时。后续再调用该接口时,无此约束。 |
| 51 | -- 该接口仅支持在范围是单Server的通信域内调用,否则会报错。 | 51 | +- 该接口仅支持在范围是单Server的通信域内调用,否则会报错。 |
| 52 | -- 多次调用该接口时,输入的内存地址不能重复或存在区间交叠。 | 52 | +- 多次调用该接口时,输入的内存地址不能重复或存在区间交叠。 |
| 53 | -- 其他约束请参见[通用约束](./zero_copy_readme.md)。 | 53 | +- 其他约束请参见[通用约束](./zero_copy_readme.md)。 |
| 54 | - | 54 | + |
| 55 | -## 调用示例 | 55 | +## 调用示例 |
| 56 | - | 56 | + |
| 57 | -```c | 57 | +```c |
| 58 | -// 设备资源初始化 | 58 | +// 设备资源初始化 |
| 59 | -aclInit(NULL); | 59 | +aclInit(NULL); |
| 60 | -aclrtSetDevice(devId); | 60 | +aclrtSetDevice(devId); |
| 61 | - | 61 | + |
| 62 | -// 创建通信域 | 62 | +// 创建通信域 |
| 63 | -HcclComm hcclComm; | 63 | +HcclComm hcclComm; |
| 64 | -HcclRootInfo rootInfo; | 64 | +HcclRootInfo rootInfo; |
| 65 | -HcclGetRootInfo(&rootInfo); | 65 | +HcclGetRootInfo(&rootInfo); |
| 66 | -HcclCommInitRootInfo(8, &rootInfo, 0, &hcclComm); | 66 | +HcclCommInitRootInfo(8, &rootInfo, 0, &hcclComm); |
| 67 | - | 67 | + |
| 68 | -// 通过aclrtReserveMemAddress申请虚拟内存 | 68 | +// 通过aclrtReserveMemAddress申请虚拟内存 |
| 69 | -void *baseVirPtr = NULL; | 69 | +void *baseVirPtr = NULL; |
| 70 | -size_t size = 1024 * 1024 * 1024; // 1GB | 70 | +size_t size = 1024 * 1024 * 1024; // 1GB |
| 71 | -aclrtReserveMemAddress(&baseVirPtr, size, 0, NULL, 0); | 71 | +aclrtReserveMemAddress(&baseVirPtr, size, 0, NULL, 0); |
| 72 | - | 72 | + |
| 73 | -// 通知HCCL预留的虚拟内存地址 | 73 | +// 通知HCCL预留的虚拟内存地址 |
| 74 | -HcclCommSetMemoryRange(hcclComm, baseVirPtr, size, 0, 0); | 74 | +HcclCommSetMemoryRange(hcclComm, baseVirPtr, size, 0, 0); |
| 75 | - | 75 | + |
| 76 | -// 后续可调用HcclCommActivateCommMemory激活内存并使用零拷贝功能 | 76 | +// 后续可调用HcclCommActivateCommMemory激活内存并使用零拷贝功能 |
| 77 | -// ... | 77 | +// ... |
| 78 | - | 78 | + |
| 79 | -// 销毁通信域 | 79 | +// 销毁通信域 |
| 80 | -HcclCommDestroy(hcclComm); | 80 | +HcclCommDestroy(hcclComm); |
| 81 | -aclFinalize(); | 81 | +aclFinalize(); |
| 82 | -``` | 82 | +``` |
| @@ -1,73 +1,73 @@ | |||
| 1 | -# HcclCommSuspend | 1 | +# HcclCommSuspend |
| 2 | - | 2 | + |
| 3 | -> [!NOTE]说明 | 3 | +> [!NOTE]说明 |
| 4 | -> 本接口为预留接口,后续有可能变更,不支持开发者使用。 | 4 | +> 本接口为预留接口,后续有可能变更,不支持开发者使用。 |
| 5 | - | 5 | + |
| 6 | -## 产品支持情况 | 6 | +## 产品支持情况 |
| 7 | - | 7 | + |
| 8 | -<!-- npu="950" id1 --> | 8 | +<!-- npu="950" id1 --> |
| 9 | -- Ascend 950PR/Ascend 950DT:不支持 | 9 | +- Ascend 950PR/Ascend 950DT:不支持 |
| 10 | -<!-- end id1 --> | 10 | +<!-- end id1 --> |
| 11 | -<!-- npu="A3" id2 --> | 11 | +<!-- npu="A3" id2 --> |
| 12 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 12 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 13 | -<!-- end id2 --> | 13 | +<!-- end id2 --> |
| 14 | -<!-- npu="910b" id3 --> | 14 | +<!-- npu="910b" id3 --> |
| 15 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 | 15 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持 |
| 16 | -<!-- end id3 --> | 16 | +<!-- end id3 --> |
| 17 | -<!-- npu="310p" id4 --> | 17 | +<!-- npu="310p" id4 --> |
| 18 | -- Atlas 推理系列产品:不支持 | 18 | +- Atlas 推理系列产品:不支持 |
| 19 | -<!-- end id4 --> | 19 | +<!-- end id4 --> |
| 20 | -<!-- npu="910" id5 --> | 20 | +<!-- npu="910" id5 --> |
| 21 | -- Atlas 训练系列产品:不支持 | 21 | +- Atlas 训练系列产品:不支持 |
| 22 | -<!-- end id5 --> | 22 | +<!-- end id5 --> |
| 23 | - | 23 | + |
| 24 | -## 功能说明 | 24 | +## 功能说明 |
| 25 | - | 25 | + |
| 26 | -当片上内存UCE(uncorrect error)故障时(ACL接口返回ACL_ERROR_RT_DEVICE_MTE_ERROR错误码),可调用本接口将通信域置为挂起状态。 | 26 | +当片上内存UCE(uncorrect error)故障时(ACL接口返回ACL_ERROR_RT_DEVICE_MTE_ERROR错误码),可调用本接口将通信域置为挂起状态。 |
| 27 | - | 27 | + |
| 28 | -使用此接口挂起通信域,无需退出Host侧进程,后续故障修复后,可调用[HcclCommResume](HcclCommResume.md)接口恢复通信域状态。 | 28 | +使用此接口挂起通信域,无需退出Host侧进程,后续故障修复后,可调用[HcclCommResume](HcclCommResume.md)接口恢复通信域状态。 |
| 29 | - | 29 | + |
| 30 | -## 函数原型 | 30 | +## 函数原型 |
| 31 | - | 31 | + |
| 32 | -```c | 32 | +```c |
| 33 | -HcclResult HcclCommSuspend(HcclComm comm) | 33 | +HcclResult HcclCommSuspend(HcclComm comm) |
| 34 | -``` | 34 | +``` |
| 35 | - | 35 | + |
| 36 | -## 参数说明 | 36 | +## 参数说明 |
| 37 | - | 37 | + |
| 38 | -| 参数名 | 输入/输出 | 描述 | | 38 | +| 参数名 | 输入/输出 | 描述 | |
| 39 | -| --- | --- | --- | | 39 | +| --- | --- | --- | |
| 40 | -| comm | 输入 | 需要将状态置为挂起的通信域。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | | 40 | +| comm | 输入 | 需要将状态置为挂起的通信域。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | |
| 41 | - | 41 | + |
| 42 | -## 返回值 | 42 | +## 返回值 |
| 43 | - | 43 | + |
| 44 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 44 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 45 | - | 45 | + |
| 46 | -## 约束说明 | 46 | +## 约束说明 |
| 47 | - | 47 | + |
| 48 | -- 本接口需要与[HcclCommResume](HcclCommResume.md)接口配对使用。 | 48 | +- 本接口需要与[HcclCommResume](HcclCommResume.md)接口配对使用。 |
| 49 | -- 本接口不能与集合通信、点对点通信的相关接口并发执行。 | 49 | +- 本接口不能与集合通信、点对点通信的相关接口并发执行。 |
| 50 | - | 50 | + |
| 51 | -## 调用示例 | 51 | +## 调用示例 |
| 52 | - | 52 | + |
| 53 | -```c | 53 | +```c |
| 54 | -// 设备资源初始化 | 54 | +// 设备资源初始化 |
| 55 | -aclInit(NULL); | 55 | +aclInit(NULL); |
| 56 | -aclrtSetDevice(devId); | 56 | +aclrtSetDevice(devId); |
| 57 | - | 57 | + |
| 58 | -// 创建通信域 | 58 | +// 创建通信域 |
| 59 | -HcclComm hcclComm; | 59 | +HcclComm hcclComm; |
| 60 | -HcclRootInfo rootInfo; | 60 | +HcclRootInfo rootInfo; |
| 61 | -HcclGetRootInfo(&rootInfo); | 61 | +HcclGetRootInfo(&rootInfo); |
| 62 | -HcclCommInitRootInfo(8, &rootInfo, 0, &hcclComm); | 62 | +HcclCommInitRootInfo(8, &rootInfo, 0, &hcclComm); |
| 63 | - | 63 | + |
| 64 | -// 检测到片上内存UCE故障后,挂起通信域 | 64 | +// 检测到片上内存UCE故障后,挂起通信域 |
| 65 | -HcclCommSuspend(hcclComm); | 65 | +HcclCommSuspend(hcclComm); |
| 66 | - | 66 | + |
| 67 | -// 故障修复后,恢复通信域 | 67 | +// 故障修复后,恢复通信域 |
| 68 | -HcclCommResume(hcclComm); | 68 | +HcclCommResume(hcclComm); |
| 69 | - | 69 | + |
| 70 | -// 销毁通信域 | 70 | +// 销毁通信域 |
| 71 | -HcclCommDestroy(hcclComm); | 71 | +HcclCommDestroy(hcclComm); |
| 72 | -aclFinalize(); | 72 | +aclFinalize(); |
| 73 | -``` | 73 | +``` |
| @@ -1,51 +1,51 @@ | |||
| 1 | -# HcclCommSymWinDeregister | 1 | +# HcclCommSymWinDeregister |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | <!-- npu="950" id1 --> | 5 | <!-- npu="950" id1 --> |
| 6 | - Ascend 950PR/Ascend 950DT:支持 | 6 | - Ascend 950PR/Ascend 950DT:支持 |
| 7 | <!-- end id1 --> | 7 | <!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:不支持 | 15 | +- Atlas 推理系列产品:不支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:不支持 | 18 | +- Atlas 训练系列产品:不支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | 将已注册的对称内存窗口解除注册,释放对称内存窗口资源。该接口不释放用户申请的内存,用户仍需按照内存申请方式释放对应内存。 | 23 | 将已注册的对称内存窗口解除注册,释放对称内存窗口资源。该接口不释放用户申请的内存,用户仍需按照内存申请方式释放对应内存。 |
| 24 | 24 | ||
| 25 | 针对Atlas A3 训练系列产品/Atlas A3 推理系列产品,本接口支持HCCS链路通信场景;针对Ascend 950PR/Ascend 950DT,本接口支持URMA场景。 | 25 | 针对Atlas A3 训练系列产品/Atlas A3 推理系列产品,本接口支持HCCS链路通信场景;针对Ascend 950PR/Ascend 950DT,本接口支持URMA场景。 |
| 26 | - | 26 | + |
| 27 | -## 函数原型 | 27 | +## 函数原型 |
| 28 | - | 28 | + |
| 29 | -```c | 29 | +```c |
| 30 | -HcclResult HcclCommSymWinDeregister(HcclCommSymWindow winHandle) | 30 | +HcclResult HcclCommSymWinDeregister(HcclCommSymWindow winHandle) |
| 31 | -``` | 31 | +``` |
| 32 | - | 32 | + |
| 33 | -## 参数说明 | 33 | +## 参数说明 |
| 34 | - | 34 | + |
| 35 | -| 参数名 | 输入/输出 | 描述 | | 35 | +| 参数名 | 输入/输出 | 描述 | |
| 36 | -| --- | --- | --- | | 36 | +| --- | --- | --- | |
| 37 | -| winHandle | 输入 | 注册过的对称窗口句柄。<br>HcclCommSymWindow类型的定义请参见[HcclCommSymWindow](./data_type_definition/HcclCommSymWindow.md)。 | | 37 | +| winHandle | 输入 | 注册过的对称窗口句柄。<br>HcclCommSymWindow类型的定义请参见[HcclCommSymWindow](./data_type_definition/HcclCommSymWindow.md)。 | |
| 38 | - | 38 | + |
| 39 | -## 返回值 | 39 | +## 返回值 |
| 40 | - | 40 | + |
| 41 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 41 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 42 | - | 42 | + |
| 43 | -## 约束说明 | 43 | +## 约束说明 |
| 44 | - | 44 | + |
| 45 | - 该接口需要配套[HcclCommSymWinRegister](HcclCommSymWinRegister.md)使用。 | 45 | - 该接口需要配套[HcclCommSymWinRegister](HcclCommSymWinRegister.md)使用。 |
| 46 | - 支持范围与[HcclCommSymWinRegister](HcclCommSymWinRegister.md)一致:针对Atlas A3 训练系列产品/Atlas A3 推理系列产品,仅支持HCCS链路通信场景;针对Ascend 950PR/Ascend 950DT,仅支持URMA场景。 | 46 | - 支持范围与[HcclCommSymWinRegister](HcclCommSymWinRegister.md)一致:针对Atlas A3 训练系列产品/Atlas A3 推理系列产品,仅支持HCCS链路通信场景;针对Ascend 950PR/Ascend 950DT,仅支持URMA场景。 |
| 47 | - 确保通信域中的所有rank同时调用该接口释放对称窗口资源。 | 47 | - 确保通信域中的所有rank同时调用该接口释放对称窗口资源。 |
| 48 | - | 48 | + |
| 49 | -## 调用示例 | 49 | +## 调用示例 |
| 50 | - | 50 | + |
| 51 | -请参见[调用示例](HcclCommSymWinRegister.md#调用示例)。 | 51 | +请参见[调用示例](HcclCommSymWinRegister.md#调用示例)。 |
| @@ -1,186 +1,186 @@ | |||
| 1 | -# HcclCommSymWinGet | 1 | +# HcclCommSymWinGet |
| 2 | - | 2 | + |
| 3 | -## 产品支持情况 | 3 | +## 产品支持情况 |
| 4 | - | 4 | + |
| 5 | -<!-- npu="950" id1 --> | 5 | +<!-- npu="950" id1 --> |
| 6 | -- Ascend 950PR/Ascend 950DT:支持 | 6 | +- Ascend 950PR/Ascend 950DT:支持 |
| 7 | -<!-- end id1 --> | 7 | +<!-- end id1 --> |
| 8 | -<!-- npu="A3" id2 --> | 8 | +<!-- npu="A3" id2 --> |
| 9 | -- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 | 9 | +- Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持 |
| 10 | -<!-- end id2 --> | 10 | +<!-- end id2 --> |
| 11 | -<!-- npu="910b" id3 --> | 11 | +<!-- npu="910b" id3 --> |
| 12 | -- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 | 12 | +- Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持 |
| 13 | -<!-- end id3 --> | 13 | +<!-- end id3 --> |
| 14 | -<!-- npu="310p" id4 --> | 14 | +<!-- npu="310p" id4 --> |
| 15 | -- Atlas 推理系列产品:不支持 | 15 | +- Atlas 推理系列产品:不支持 |
| 16 | -<!-- end id4 --> | 16 | +<!-- end id4 --> |
| 17 | -<!-- npu="910" id5 --> | 17 | +<!-- npu="910" id5 --> |
| 18 | -- Atlas 训练系列产品:不支持 | 18 | +- Atlas 训练系列产品:不支持 |
| 19 | -<!-- end id5 --> | 19 | +<!-- end id5 --> |
| 20 | - | 20 | + |
| 21 | -## 功能说明 | 21 | +## 功能说明 |
| 22 | - | 22 | + |
| 23 | -根据已注册对称内存的地址指针,返回对应的窗口资源句柄及其在窗口内的偏移量。 | 23 | +根据已注册对称内存的地址指针,返回对应的窗口资源句柄及其在窗口内的偏移量。 |
| 24 | - | 24 | + |
| 25 | -<!-- npu="950" id6 --> | 25 | +<!-- npu="950" id6 --> |
| 26 | -- 针对Ascend 950PR/Ascend 950DT,本接口支持URMA场景。 | 26 | +- 针对Ascend 950PR/Ascend 950DT,本接口支持URMA场景。 |
| 27 | -<!-- end id6 --> | 27 | +<!-- end id6 --> |
| 28 | -<!-- npu="A3" id7 --> | 28 | +<!-- npu="A3" id7 --> |
| 29 | -- 针对Atlas A3 训练系列产品/Atlas A3 推理系列产品,本接口支持HCCS链路通信场景。 | 29 | +- 针对Atlas A3 训练系列产品/Atlas A3 推理系列产品,本接口支持HCCS链路通信场景。 |
| 30 | -<!-- end id7 --> | 30 | +<!-- end id7 --> |
| 31 | - | 31 | + |
| 32 | -## 函数原型 | 32 | +## 函数原型 |
| 33 | - | 33 | + |
| 34 | -```c | 34 | +```c |
| 35 | -HcclResult HcclCommSymWinGet(HcclComm comm, void *ptr, size_t size, HcclCommSymWindow *winHandle, size_t *offset) | 35 | +HcclResult HcclCommSymWinGet(HcclComm comm, void *ptr, size_t size, HcclCommSymWindow *winHandle, size_t *offset) |
| 36 | -``` | 36 | +``` |
| 37 | - | 37 | + |
| 38 | -## 参数说明 | 38 | +## 参数说明 |
| 39 | - | 39 | + |
| 40 | -| 参数名 | 输入/输出 | 描述 | | 40 | +| 参数名 | 输入/输出 | 描述 | |
| 41 | -| --- | --- | --- | | 41 | +| --- | --- | --- | |
| 42 | -| comm | 输入 | HCCL通信域。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | | 42 | +| comm | 输入 | HCCL通信域。<br>HcclComm类型的定义可参见[HcclComm](./data_type_definition/HcclComm.md)。 | |
| 43 | -| ptr | 输入 | 已注册对称内存的地址指针,该内存需要已使用[HcclCommSymWinRegister](HcclCommSymWinRegister.md)接口进行注册。<br>Atlas A3 训练系列产品/Atlas A3 推理系列产品的HCCS场景下,该地址为预留并完成物理内存映射的虚拟地址。<br>Ascend 950PR/Ascend 950DT的URMA场景下,该地址为已注册的Device内存地址。 | | 43 | +| ptr | 输入 | 已注册对称内存的地址指针,该内存需要已使用[HcclCommSymWinRegister](HcclCommSymWinRegister.md)接口进行注册。<br>Atlas A3 训练系列产品/Atlas A3 推理系列产品的HCCS场景下,该地址为预留并完成物理内存映射的虚拟地址。<br>Ascend 950PR/Ascend 950DT的URMA场景下,该地址为已注册的Device内存地址。 | |
| 44 | -| size | 输入 | 对称内存窗口大小。<br>假设对称内存窗口大小为symSize,已注册对称内存的地址指针为addr,size需要满足以下条件:<br> - size > 0<br> - ptr+size <= addr + symSize | | 44 | +| size | 输入 | 对称内存窗口大小。<br>假设对称内存窗口大小为symSize,已注册对称内存的地址指针为addr,size需要满足以下条件:<br> - size > 0<br> - ptr+size <= addr + symSize | |
| 45 | -| winHandle | 输出 | 指向“对称内存窗口资源句柄”的指针。 | | 45 | +| winHandle | 输出 | 指向“对称内存窗口资源句柄”的指针。 | |
| 46 | -| offset | 输出 | 指向偏移量的指针。<br>假设已注册对称内存的地址指针为addr,则*offset = ptr - addr。 | | 46 | +| offset | 输出 | 指向偏移量的指针。<br>假设已注册对称内存的地址指针为addr,则*offset = ptr - addr。 | |
| 47 | - | 47 | + |
| 48 | -## 返回值 | 48 | +## 返回值 |
| 49 | - | 49 | + |
| 50 | -[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 | 50 | +[HcclResult](./data_type_definition/HcclResult.md):接口成功返回HCCL_SUCCESS,其他失败。 |
| 51 | - | 51 | + |
| 52 | -## 约束说明 | 52 | +## 约束说明 |
| 53 | - | 53 | + |
| 54 | -<!-- npu="950" id8 --> | 54 | +<!-- npu="950" id8 --> |
| 55 | -- 针对Ascend 950PR/Ascend 950DT,仅支持URMA场景。 | 55 | +- 针对Ascend 950PR/Ascend 950DT,仅支持URMA场景。 |
| 56 | -<!-- end id8 --> | 56 | +<!-- end id8 --> |
| 57 | -<!-- npu="A3" id9 --> | 57 | +<!-- npu="A3" id9 --> |
| 58 | -- 针对Atlas A3 训练系列产品/Atlas A3 推理系列产品,仅支持HCCS链路通信场景。 | 58 | +- 针对Atlas A3 训练系列产品/Atlas A3 推理系列产品,仅支持HCCS链路通信场景。 |
| 59 | -<!-- end id9 --> | 59 | +<!-- end id9 --> |
| 60 | -- 仅支持通信算子展开模式为AI CPU的场景。 | 60 | +- 仅支持通信算子展开模式为AI CPU的场景。 |
| 61 | - | 61 | + |
| 62 | -## 调用示例 | 62 | +## 调用示例 |
| 63 | - | 63 | + |
| 64 | -<!-- npu="950" id10 --> | 64 | +<!-- npu="950" id10 --> |
| 65 | -### Ascend 950PR/Ascend 950DT URMA场景 | 65 | +### Ascend 950PR/Ascend 950DT URMA场景 |
| 66 | - | 66 | + |
| 67 | -```c | 67 | +```c |
| 68 | -// 创建并初始化通信域配置项 | 68 | +// 创建并初始化通信域配置项 |
| 69 | -HcclCommConfig config; | 69 | +HcclCommConfig config; |
| 70 | -HcclCommConfigInit(&config); | 70 | +HcclCommConfigInit(&config); |
| 71 | - | 71 | + |
| 72 | -// 获取通信域参数 | 72 | +// 获取通信域参数 |
| 73 | -uint32_t rankSize = 4; | 73 | +uint32_t rankSize = 4; |
| 74 | -uint32_t rankId = 0; | 74 | +uint32_t rankId = 0; |
| 75 | -HcclRootInfo rootInfo; | 75 | +HcclRootInfo rootInfo; |
| 76 | -HCCLCHECK(HcclGetRootInfo(&rootInfo)); | 76 | +HCCLCHECK(HcclGetRootInfo(&rootInfo)); |
| 77 | - | 77 | + |
| 78 | -// 初始化集合通信域 | 78 | +// 初始化集合通信域 |
| 79 | -HcclComm hcclComm; | 79 | +HcclComm hcclComm; |
| 80 | -HCCLCHECK(HcclCommInitRootInfoConfig(rankSize, &rootInfo, rankId, &config, &hcclComm)); | 80 | +HCCLCHECK(HcclCommInitRootInfoConfig(rankSize, &rootInfo, rankId, &config, &hcclComm)); |
| 81 | - | 81 | + |
| 82 | -size_t memSize = 2 * 1024 * 1024; | 82 | +size_t memSize = 2 * 1024 * 1024; |
| 83 | - | 83 | + |
| 84 | -// 申请Device内存 | 84 | +// 申请Device内存 |
| 85 | -void *devPtr = nullptr; | 85 | +void *devPtr = nullptr; |
| 86 | -ACLCHECK(aclrtMalloc(&devPtr, memSize, ACL_MEM_MALLOC_HUGE_FIRST)); | 86 | +ACLCHECK(aclrtMalloc(&devPtr, memSize, ACL_MEM_MALLOC_HUGE_FIRST)); |
| 87 | - | 87 | + |
| 88 | -HcclCommSymWindow symWin; | 88 | +HcclCommSymWindow symWin; |
| 89 | -// 注册对称内存 | 89 | +// 注册对称内存 |
| 90 | -HCCLCHECK(HcclCommSymWinRegister(hcclComm, devPtr, memSize, &symWin, 1)); | 90 | +HCCLCHECK(HcclCommSymWinRegister(hcclComm, devPtr, memSize, &symWin, 1)); |
| 91 | - | 91 | + |
| 92 | -// 使用HcclCommSymWinGet获取对称内存资源 | 92 | +// 使用HcclCommSymWinGet获取对称内存资源 |
| 93 | -HcclCommSymWindow tempWin; | 93 | +HcclCommSymWindow tempWin; |
| 94 | -size_t offset = 0; | 94 | +size_t offset = 0; |
| 95 | -HCCLCHECK(HcclCommSymWinGet(hcclComm, devPtr, memSize, &tempWin, &offset)); | 95 | +HCCLCHECK(HcclCommSymWinGet(hcclComm, devPtr, memSize, &tempWin, &offset)); |
| 96 | - | 96 | + |
| 97 | -// 解注册对称内存 | 97 | +// 解注册对称内存 |
| 98 | -HCCLCHECK(HcclCommSymWinDeregister(symWin)); | 98 | +HCCLCHECK(HcclCommSymWinDeregister(symWin)); |
| 99 | - | 99 | + |
| 100 | -// 释放内存 | 100 | +// 释放内存 |
| 101 | -ACLCHECK(aclrtFree(devPtr)); | 101 | +ACLCHECK(aclrtFree(devPtr)); |
| 102 | - | 102 | + |
| 103 | -// 销毁通信域 | 103 | +// 销毁通信域 |
| 104 | -HCCLCHECK(HcclCommDestroy(hcclComm)); | 104 | +HCCLCHECK(HcclCommDestroy(hcclComm)); |
| 105 | -``` | 105 | +``` |
| 106 | -<!-- end id10 --> | 106 | +<!-- end id10 --> |
| 107 | - | 107 | + |
| 108 | -<!-- npu="A3" id11 --> | 108 | +<!-- npu="A3" id11 --> |
| 109 | -### Atlas A3 训练系列产品/Atlas A3 推理系列产品HCCS场景 | 109 | +### Atlas A3 训练系列产品/Atlas A3 推理系列产品HCCS场景 |
| 110 | - | 110 | + |
| 111 | -```c | 111 | +```c |
| 112 | -// 创建并初始化通信域配置项 | 112 | +// 创建并初始化通信域配置项 |
| 113 | -HcclCommConfig config; | 113 | +HcclCommConfig config; |
| 114 | -HcclCommConfigInit(&config); | 114 | +HcclCommConfigInit(&config); |
| 115 | -// 按需修改通信域配置 | 115 | +// 按需修改通信域配置 |
| 116 | -config.hcclSymWinMaxMemSizePerRank = 10; // 单位GB, 默认值为16 | 116 | +config.hcclSymWinMaxMemSizePerRank = 10; // 单位GB, 默认值为16 |
| 117 | - | 117 | + |
| 118 | -// 获取通信域参数 | 118 | +// 获取通信域参数 |
| 119 | -uint32_t rankSize = 4; | 119 | +uint32_t rankSize = 4; |
| 120 | -uint32_t rankId = 0; | 120 | +uint32_t rankId = 0; |
| 121 | -int32_t deviceId; | 121 | +int32_t deviceId; |
| 122 | -ACLCHECK(aclrtGetDevice(&deviceId)); | 122 | +ACLCHECK(aclrtGetDevice(&deviceId)); |
| 123 | -HcclRootInfo rootInfo; | 123 | +HcclRootInfo rootInfo; |
| 124 | -HCCLCHECK(HcclGetRootInfo(&rootInfo)); | 124 | +HCCLCHECK(HcclGetRootInfo(&rootInfo)); |
| 125 | - | 125 | + |
| 126 | -// 初始化集合通信域 | 126 | +// 初始化集合通信域 |
| 127 | -HcclComm hcclComm; | 127 | +HcclComm hcclComm; |
| 128 | -HCCLCHECK(HcclCommInitRootInfoConfig(rankSize, &rootInfo, rankId, &config, &hcclComm)); | 128 | +HCCLCHECK(HcclCommInitRootInfoConfig(rankSize, &rootInfo, rankId, &config, &hcclComm)); |
| 129 | - | 129 | + |
| 130 | -// 创建任务流 | 130 | +// 创建任务流 |
| 131 | -aclrtStream stream; | 131 | +aclrtStream stream; |
| 132 | -ACLCHECK(aclrtCreateStream(&stream)); | 132 | +ACLCHECK(aclrtCreateStream(&stream)); |
| 133 | - | 133 | + |
| 134 | -// 物理内存属性配置 | 134 | +// 物理内存属性配置 |
| 135 | -aclrtPhysicalMemProp prop; | 135 | +aclrtPhysicalMemProp prop; |
| 136 | -prop.handleType = ACL_MEM_HANDLE_TYPE_NONE; | 136 | +prop.handleType = ACL_MEM_HANDLE_TYPE_NONE; |
| 137 | -prop.allocationType = ACL_MEM_ALLOCATION_TYPE_PINNED; | 137 | +prop.allocationType = ACL_MEM_ALLOCATION_TYPE_PINNED; |
| 138 | -prop.memAttr = ACL_HBM_MEM_HUGE; | 138 | +prop.memAttr = ACL_HBM_MEM_HUGE; |
| 139 | -prop.location.id = deviceId; | 139 | +prop.location.id = deviceId; |
| 140 | -prop.location.type = ACL_MEM_LOCATION_TYPE_DEVICE; | 140 | +prop.location.type = ACL_MEM_LOCATION_TYPE_DEVICE; |
| 141 | -prop.reserve = 0; | 141 | +prop.reserve = 0; |
| 142 | - | 142 | + |
| 143 | -// 获取对齐粒度,通常为2MB | 143 | +// 获取对齐粒度,通常为2MB |
| 144 | -size_t granularity; | 144 | +size_t granularity; |
| 145 | -ACLCHECK(aclrtMemGetAllocationGranularity(&prop, ACL_RT_MEM_ALLOC_GRANULARITY_RECOMMENDED, &granularity)); | 145 | +ACLCHECK(aclrtMemGetAllocationGranularity(&prop, ACL_RT_MEM_ALLOC_GRANULARITY_RECOMMENDED, &granularity)); |
| 146 | - | 146 | + |
| 147 | -// size按粒度对齐 | 147 | +// size按粒度对齐 |
| 148 | -size_t size = 2 * 1024 * 1024; | 148 | +size_t size = 2 * 1024 * 1024; |
| 149 | -size_t allocSize = (size + granularity - 1) / granularity * granularity; | 149 | +size_t allocSize = (size + granularity - 1) / granularity * granularity; |
| 150 | - | 150 | + |
| 151 | -// 预留虚拟内存 | 151 | +// 预留虚拟内存 |
| 152 | -void *virPtr; | 152 | +void *virPtr; |
| 153 | -ACLCHECK(aclrtReserveMemAddress(&virPtr, allocSize, 0, nullptr, 1)); | 153 | +ACLCHECK(aclrtReserveMemAddress(&virPtr, allocSize, 0, nullptr, 1)); |
| 154 | - | 154 | + |
| 155 | -// 申请物理内存 | 155 | +// 申请物理内存 |
| 156 | -aclrtDrvMemHandle memHandle; | 156 | +aclrtDrvMemHandle memHandle; |
| 157 | -ACLCHECK(aclrtMallocPhysical(&memHandle, allocSize, &prop, 0)); | 157 | +ACLCHECK(aclrtMallocPhysical(&memHandle, allocSize, &prop, 0)); |
| 158 | - | 158 | + |
| 159 | -// 建立物理到虚拟的映射 | 159 | +// 建立物理到虚拟的映射 |
| 160 | -ACLCHECK(aclrtMapMem(virPtr, allocSize, 0, memHandle, 0)); | 160 | +ACLCHECK(aclrtMapMem(virPtr, allocSize, 0, memHandle, 0)); |
| 161 | - | 161 | + |
| 162 | -HcclCommSymWindow symWin; | 162 | +HcclCommSymWindow symWin; |
| 163 | -// 注册对称内存 | 163 | +// 注册对称内存 |
| 164 | -HCCLCHECK(HcclCommSymWinRegister(hcclComm, virPtr, allocSize, &symWin, 1)); | 164 | +HCCLCHECK(HcclCommSymWinRegister(hcclComm, virPtr, allocSize, &symWin, 1)); |
| 165 | - | 165 | + |
| 166 | -// 使用HcclCommSymWinGet获取对称内存资源 | 166 | +// 使用HcclCommSymWinGet获取对称内存资源 |
| 167 | -HcclCommSymWindow tempWin; | 167 | +HcclCommSymWindow tempWin; |
| 168 | -size_t offset = 0; | 168 | +size_t offset = 0; |
| 169 | -HCCLCHECK(HcclCommSymWinGet(hcclComm, virPtr, allocSize, &tempWin, &offset)); | 169 | +HCCLCHECK(HcclCommSymWinGet(hcclComm, virPtr, allocSize, &tempWin, &offset)); |
| 170 | - | 170 | + |
| 171 | -// 解注册对称内存 | 171 | +// 解注册对称内存 |
| 172 | -HCCLCHECK(HcclCommSymWinDeregister(symWin)); | 172 | +HCCLCHECK(HcclCommSymWinDeregister(symWin)); |
| 173 | - | 173 | + |
| 174 | -// 释放内存 | 174 | +// 释放内存 |
| 175 | -ACLCHECK(aclrtUnmapMem(virPtr)); | 175 | +ACLCHECK(aclrtUnmapMem(virPtr)); |
| 176 | -ACLCHECK(aclrtFreePhysical(memHandle)); | 176 | +ACLCHECK(aclrtFreePhysical(memHandle)); |
| 177 | -ACLCHECK(aclrtReleaseMemAddress(virPtr)); | 177 | +ACLCHECK(aclrtReleaseMemAddress(virPtr)); |
| 178 | - | 178 | + |
| 179 | -// 销毁任务流 | 179 | +// 销毁任务流 |
| 180 | -ACLCHECK(aclrtDestroyStream(stream)); | 180 | +ACLCHECK(aclrtDestroyStream(stream)); |
| 181 | - | 181 | + |
| 182 | -// 销毁通信域 | 182 | +// 销毁通信域 |
| 183 | -HCCLCHECK(HcclCommDestroy(hcclComm)); | 183 | +HCCLCHECK(HcclCommDestroy(hcclComm)); |
| 184 | -``` | 184 | +``` |
| 185 | - | 185 | + |
| 186 | -<!-- end id11 --> | 186 | +<!-- end id11 --> |