当前位置: 首页 > news >正文

CANN/HCCL集合通信库快速入门指南

快速入门

【免费下载链接】hccl集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl

本节以AllReduce算子为例,介绍其在单算子执行模式下的使用方式,帮助用户快速体验集合通信功能。

AllReduce算子介绍

AllReduce操作是将通信域内所有节点的输入数据进行归约操作后(支持sum、prod、max、min),再把结果发送到所有节点的输出buffer。

注意:每个rank只能有一个输入。

样例介绍

用户可以点击样例链接获取完整样例代码,该样例基于root节点信息创建通信域,在一个进程中管理一个AI Server,其中每个NPU设备由一个线程进行管理,主要包含以下功能点:

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

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

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

  • 调用HcclAllReduce( ) 接口,将通信域内所有rank的输入数据进行相加后,再把结果发送到所有节点,并打印结果。

编译运行

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

make make test

结果解析

每个rank的数据初始化为0~7,经过AllReduce操作后,每个rank的结果是所有rank对应位置数据的和(8个rank的数据相加)。

Found 8 NPU device(s) available rankId: 0, output: [ 0 8 16 24 32 40 48 56 ] rankId: 1, output: [ 0 8 16 24 32 40 48 56 ] rankId: 2, output: [ 0 8 16 24 32 40 48 56 ] rankId: 3, output: [ 0 8 16 24 32 40 48 56 ] rankId: 4, output: [ 0 8 16 24 32 40 48 56 ] rankId: 5, output: [ 0 8 16 24 32 40 48 56 ] rankId: 6, output: [ 0 8 16 24 32 40 48 56 ] rankId: 7, output: [ 0 8 16 24 32 40 48 56 ]

关键代码解析

  1. 将rank0作为root节点,生成rootInfo标识信息,主要包含:Device IP、Device ID等信息。此信息需广播至集群内所有rank用来初始化通信域。

    int rootRank = 0; ACLCHECK(aclrtSetDevice(rootRank)); // 生成root节点信息,各线程使用同一份rootInfo void *rootInfoBuf = nullptr; ACLCHECK(aclrtMallocHost(&rootInfoBuf, sizeof(HcclRootInfo))); HcclRootInfo *rootInfo = (HcclRootInfo *)rootInfoBuf; HCCLCHECK(HcclGetRootInfo(rootInfo));
  2. 申请内存,构造输入数据。

    // 设置当前线程操作的设备 ACLCHECK(aclrtSetDevice(ctx->device)); // 申请集合通信操作的Device内存 size_t count = ctx->devCount; size_t mallocSize = count * sizeof(float); ACLCHECK(aclrtMalloc(&sendBuf, mallocSize, ACL_MEM_MALLOC_HUGE_ONLY)); ACLCHECK(aclrtMalloc(&recvBuf, mallocSize, ACL_MEM_MALLOC_HUGE_ONLY)); // 申请 Host 内存用于存放输入数据,并将内容初始化为:0~7 void *hostBuf = nullptr; ACLCHECK(aclrtMallocHost(&hostBuf, mallocSize)); float *tmpHostBuff = static_cast<float *>(hostBuf); for (uint32_t i = 0; i < count; ++i) { tmpHostBuff[i] = static_cast<float>(i); } // 将Host侧输入数据拷贝到Device侧 ACLCHECK(aclrtMemcpy(sendBuf, mallocSize, hostBuf, mallocSize, ACL_MEMCPY_HOST_TO_DEVICE));
  3. 初始化通信域。

    HcclComm hcclComm; HCCLCHECK(HcclCommInitRootInfo(ctx->devCount, ctx->rootInfo, ctx->device, &hcclComm));
  4. 执行AllReduce集合通信算子。

    // 创建任务流 aclrtStream stream; ACLCHECK(aclrtCreateStream(&stream)); // 执行 AllReduce,将通信域内所有节点的 sendBuf 进行相加后,再把结果发送到所有节点的 recvBuf HCCLCHECK(HcclAllReduce(sendBuf, recvBuf, count, HCCL_DATA_TYPE_FP32, HCCL_REDUCE_SUM, hcclComm, stream)); // 阻塞等待任务流中的集合通信任务执行完成 ACLCHECK(aclrtSynchronizeStream(stream));
  5. 释放资源。

    ACLCHECK(aclrtFree(sendBuf)); // 释放 Device 侧内存 ACLCHECK(aclrtFree(recvBuf)); // 释放 Device 侧内存 ACLCHECK(aclrtFreeHost(hostBuf)); // 释放 Host 侧内存 ACLCHECK(aclrtDestroyStream(stream)); // 销毁任务流 HCCLCHECK(HcclCommDestroy(hcclComm)); // 销毁通信域 ACLCHECK(aclFinalize()); // 设备去初始化

【免费下载链接】hccl集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案项目地址: https://gitcode.com/cann/hccl

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/785423/

相关文章:

  • 芯片设计实战:变异感知设计方法论与先进工艺下的良率挑战
  • 扩散模型原理与实践:从噪声预测到图像生成的AI核心技术
  • cann/ops-math矩阵乘压缩解压缩算子
  • 《龙虾OpenClaw系列:从嵌入式裸机到芯片级系统深度实战60课》038、多核架构入门——双核通信与共享内存
  • AI赋能分子相互作用:几何深度学习在药物与材料设计中的实践
  • 保姆级教程:用Tinc在Ubuntu 22.04上搭建一个加密的虚拟局域网(附多节点配置避坑指南)
  • UIKit开发者的桌面助手:生命周期、内存、并发与集合视图实践指南
  • 《网络攻防实践》实践八报告
  • 告别‘黑盒子’:用一台标准服务器搞定防火墙、路由和DHCP,聊聊NFV在家庭和企业网关的实战应用
  • XHS-Downloader:专业级小红书内容采集与批量下载技术方案
  • Rust轻量级LLM推理框架graniet/llm:本地部署与高性能实践
  • 4.30 redis简介
  • 强化学习中的文化累积:从个体智能到群体智慧的进化范式
  • AR-LLM大规模部署下的自然语言攻击:原理、风险与纵深防御实践
  • Datasette与ChatGPT插件:用自然语言查询数据库的实践指南
  • 20254209 实验三《Python程序设计》实验报告
  • 如何为你的大模型应用快速接入稳定且低成本的API服务
  • 别再硬扛了!Halcon局部形变匹配(Deformable)参数调优实战,解决工业零件轻微变形识别难题
  • 从萃取到分析全闭环,西恩士AI液冷清洁度萃取+分析全套设备深度解读 - 工业干货社
  • Hugging Face模型量化超快
  • 信息瓶颈如何影响生成模型学习量子相干性?
  • 量子计算中的高阶Magnus截断技术与应用
  • 从URDF到真实控制:手把手教你用ros2_control驱动一个两关节机器人(RRBot实战)
  • 液冷清洁度检测精度低?西恩士AI液冷清洁度分析系统重定义微米级检测 - 工业干货社
  • Trafilatura:高精度网页正文提取的Python利器与实战指南
  • 2026年华东屏蔽设备服务商推荐:常州新马屏蔽设备,以专业电磁防护技术赋能科研与工业安全 - 海棠依旧大
  • CktEvo框架:LLM驱动的RTL仓库级优化技术解析
  • DFAM设计思维:从3D打印众筹案例看增材制造设计实战
  • AI技术扩散六十年全景:从计算机科学到98%研究领域的渗透轨迹
  • 量子计算在强关联体系中的挑战与CSQD方法创新