已合并
[build] unified encoding, line breaks, and license header format #4522
ouyangcaike创建于 8月10日
[build] unified encoding, line breaks, and license header format #4522
已合并
ouyangcaike创建于 8月10日
230 个文件变更+26972-25532
@@ -1,16 +1,16 @@
1-*.png filter=lfs diff=lfs merge=lfs -text1+# -----------------------------------------------------------------------------------------------------------
2-*.gif filter=lfs diff=lfs merge=lfs -text2+# Copyright (c) 2026 Huawei Technologies Co., Ltd.
3-# 强制源码文件使用 LF,防止 Windows autocrlf 转换为 CRLF3+# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4-*.c text eol=lf4+# CANN Open Software License Agreement Version 2.0 (the "License").
5-*.h text eol=lf5+# Please refer to the License for details. You may not use this file except in compliance with the License.
6-*.cc text eol=lf6+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7-*.hh text eol=lf7+# INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8-*.cpp text eol=lf8+# See LICENSE in the root of the software repository for the full text of the License.
9-*.hpp text eol=lf9+# -----------------------------------------------------------------------------------------------------------
10-*.cxx text eol=lf10+ 
11-*.hxx text eol=lf11+# 默认所有文本文件使用 LF,防止 Windows autocrlf 转换为 CRLF
12-*.asc text eol=lf12+* text=auto eol=lf
13-*.sh text eol=lf13+ 
14-*.py text eol=lf14+# LFS 跟踪的图片(二进制,不转换换行)
15-*.cmake text eol=lf15+*.png filter=lfs diff=lfs merge=lfs -text
16-CMakeLists.txt text eol=lf16+*.gif filter=lfs diff=lfs merge=lfs -text
@@ -1,49 +1,49 @@
1-name: st_action1+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: true7+ required: true
8- type: string8+ type: string
9- 9+ 
10-jobs:10+jobs:
11- JOB_st:11+ JOB_st:
12- name: ST12+ name: ST
13- needs: []13+ needs: []
14- steps:14+ steps:
15- -15+ -
16- name: Checkout16+ name: Checkout
17- identifier: process_checkout17+ identifier: process_checkout
18- uses: checkout18+ 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: download23+ name: download
24- uses: obs-download24+ 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.txt31+ ${{ env.obs_path }}/pr_filelist.txt
32- ${{ env.obs_path }}/pr_filelist_mod.txt32+ ${{ env.obs_path }}/pr_filelist_mod.txt
33- ${{ env.obs_path }}/st.sh33+ ${{ env.obs_path }}/st.sh
34- path: ${{ steps.process_checkout.outputs.path }}34+ path: ${{ steps.process_checkout.outputs.path }}
35- - 35+ -
36- name: redis-cache36+ name: redis-cache
37- uses: cann/.gitcode/actions/redis-cache@master37+ uses: cann/.gitcode/actions/redis-cache@master
38- -38+ -
39- name: st_acc39+ name: st_acc
40- identifier: st40+ 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.sh45+ 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 of3+# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4# CANN Open Software License Agreement Version 2.0 (the "License").4# CANN Open Software License Agreement Version 2.0 (the "License").
5# Please refer to the License for details. You may not use this file 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+ 
1repos:11repos:
2 # C++ 代码格式化检查12 # C++ 代码格式化检查
3 - repo: https://gitcode.com/pre-commit-clang/mirrors-clang-format13 - repo: https://gitcode.com/pre-commit-clang/mirrors-clang-format
@@ -5,7 +15,7 @@ repos:
5 hooks:15 hooks:
6 - id: clang-format16 - 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"
MOAT.xml+15-8
@@ -1,11 +1,12 @@
1<?xml version="1.0" encoding="UTF-8"?>1<?xml version="1.0" encoding="UTF-8"?>
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 of3+ * 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 of3+# 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 
9json:11json:
10 version: v3.11.312 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 of3+# 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 
9hcomm:11hcomm:
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 of3# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4# CANN Open Software License Agreement Version 2.0 (the "License").4# CANN Open Software License Agreement Version 2.0 (the "License").
@@ -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 
11message(STATUS "Build third party library ibv_extend")11message(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 of3# This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4# CANN Open Software License Agreement Version 2.0 (the "License").4# CANN Open Software License Agreement Version 2.0 (the "License").
@@ -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 
11message("Build third party library urma")11message("Build third party library urma")
12set(URMA_NAME "urma")12set(URMA_NAME "urma")
@@ -1,97 +1,97 @@
1-# HcclAicpuKernelLaunch1+# 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-```c29+```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-```c55+```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-# HcclBarrier1+# 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-```c27+```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-```c48+```c
49-HcclComm comm;49+HcclComm comm;
50-aclrtStream stream;50+aclrtStream stream;
51-aclrtCreateStream(&stream);51+aclrtCreateStream(&stream);
52- 52+ 
53-// 下发通信任务到该stream,如HcclAllReduce53+// 下发通信任务到该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-# HcclCommActivateCommMemory1+# 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-```c30+```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-```c56+```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-# HcclCommConfigInit1+# 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-```c27+```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-```c47+```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,默认值为:20058+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-# HcclCommDeactivateCommMemory1+# 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-```c30+```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-```c51+```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-# HcclCommDestroy1+# 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-```c27+```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-```c54+```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-# HcclCommGetHandleWithName1+# 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-```c27+```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-```c48+```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-# HcclCommGetStatus1+# 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-```c27+```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-```c48+```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-# HcclCommInitAll1+# 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-```c27+```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-```c51+```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-# HcclCommInitClusterInfo1+# 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-```c29+```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-```c51+```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 ID56+// 指定集合通信操作使用的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 id61+// 此样例以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-# HcclCommInitClusterInfoConfig1+# 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-```c27+```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-```c50+```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,默认值为:20063+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 id68+// 此样例以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-# HcclCommInitRootInfo1+# 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-![不支持并发调用](figures/comminit_rootinfo.png)29+![不支持并发调用](figures/comminit_rootinfo.png)
30- 30+ 
31-## 函数原型31+## 函数原型
32- 32+ 
33-```c33+```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-```c56+```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-# HcclCommInitRootInfoConfig1+# 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-![不支持并发调用](figures/commit_rootinfo_config.png)29+![不支持并发调用](figures/commit_rootinfo_config.png)
30- 30+ 
31-## 函数原型31+## 函数原型
32- 32+ 
33-```c33+```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-```c57+```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,默认值为:20068+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-# HcclCommResume1+# 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-```c32+```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-```c53+```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-# HcclCommSetMemoryRange1+# 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-```c30+```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-```c57+```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; // 1GB70+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-# HcclCommSuspend1+# 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-```c32+```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-```c53+```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-# HcclCommSymWinDeregister1+# 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-```c29+```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-# HcclCommSymWinGet1+# 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-```c34+```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-```c67+```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-```c111+```c
112-// 创建并初始化通信域配置项112+// 创建并初始化通信域配置项
113-HcclCommConfig config;113+HcclCommConfig config;
114-HcclCommConfigInit(&config);114+HcclCommConfigInit(&config);
115-// 按需修改通信域配置115+// 按需修改通信域配置
116-config.hcclSymWinMaxMemSizePerRank = 10; // 单位GB, 默认值为16116+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-// 获取对齐粒度,通常为2MB143+// 获取对齐粒度,通常为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 -->