文件最后提交记录最后更新时间
[Docs] Update example docs Co-authored-by: jiyuanhao<jiyuanhao1@huawei.com> # message auto-generated for no-merge-commit merge: !260 merge fix/example/950 into master [Docs] Update example docs Created-by: jiyuanhao Commit-by: jiyuanhao Merged-by: cann-robot Description: ## 描述 修改 example 样例支持的产品型号、添加任务编排展开位置配置 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!2603 个月前
[Examples] 完善样例环境要求,补充集群拓扑 Co-authored-by: jiyuanhao<jiyuanhao1@huawei.com> # message auto-generated for no-merge-commit merge: !817 merge docs/example/topo into master [Examples] 完善样例环境要求,补充集群拓扑 Created-by: jiyuanhao Commit-by: jiyuanhao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> [Examples] 完善样例环境要求,补充集群拓扑 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #123--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!8171 个月前
alter license Co-authored-by: maxinyuan1<maxinyuan2@h-partners.com> # message auto-generated for no-merge-commit merge: !271 merge license into master alter license Created-by: maxinyuan1 Commit-by: maxinyuan1 Merged-by: cann-robot Description: ## 描述 修改不规范的license ## 关联的Issue https://gitcode.com/cann/hccl/issues/50 ## 测试 编译成功 ## 文档更新 NA ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/hccl!2713 个月前
README.md

集合通信 - AlltoAll

样例介绍

本样例展示如何使用 HcclAlltoAll() 接口执行 AlltoAll 操作,包含以下功能点:

  • 设备检测,通过 aclrtGetDeviceCount() 接口查询可用设备数量。

  • 将 rank0 作为 root 节点,通过 HcclGetRootInfo() 接口生成 root 节点的 rootinfo 标识信息。

    rootinfo 标识信息主要包含:Device IP、Device ID 等信息,此信息需广播至集群内所有 rank 用来初始化通信域。

  • 在每个线程中,基于 rootinfo 标识信息通过 HcclCommInitRootInfo() 接口初始化通信域。

  • 调用 HcclAlltoAll() 算子,将输入数据在特定的维度切分成特定的块数,并按顺序发送给其他 rank,同时从其他 rank 接收数据,按顺序在特定的维度拼接数据,最后打印结果。

目录结构

├── main.cc     # 样例源文件
├── Makefile    # 编译/构建配置文件
└── alltoall    # 编译生成的可执行文件

环境准备

环境要求

本样例支持以下产品,组网为单机N卡(N>=2):

  • Ascend 950PR / Ascend 950DT
  • Atlas A3 训练系列产品 / Atlas A3 推理系列产品
  • Atlas A2 训练系列产品
  • Atlas 训练系列产品 / Atlas 推理系列产品

配置环境变量

# 设置 CANN 环境变量,以 root 用户默认安装路径为例
source /usr/local/Ascend/cann/set_env.sh

编译执行样例

在本样例代码目录下执行如下命令:

make
make test

注意:可通过设置 HCCL_OP_EXPANSION_MODE 环境变量配置通信算子的展开模式,不同产品型号支持的范围可参考环境变量列表中该环境变量的使用方法。

# 设置通信算子的展开模式为AI CPU通信引擎
export HCCL_OP_EXPANSION_MODE=AI_CPU

结果示例

每个 rank 的数据初始化为对应的 rank_id,经过 AlltoAll 操作后,各节点的内容为所有节点输入数据的拼接。

Found 8 NPU device(s) available
rankId: 0, output: [ 0 1 2 3 4 5 6 7 ]
rankId: 1, output: [ 0 1 2 3 4 5 6 7 ]
rankId: 2, output: [ 0 1 2 3 4 5 6 7 ]
rankId: 3, output: [ 0 1 2 3 4 5 6 7 ]
rankId: 4, output: [ 0 1 2 3 4 5 6 7 ]
rankId: 5, output: [ 0 1 2 3 4 5 6 7 ]
rankId: 6, output: [ 0 1 2 3 4 5 6 7 ]
rankId: 7, output: [ 0 1 2 3 4 5 6 7 ]