news 2026/5/9 15:14:31

CANN/hccl发送操作接口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/hccl发送操作接口

HcclSend

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

产品支持情况

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

[!NOTE]说明 针对Atlas A2 训练系列产品/Atlas A2 推理系列产品,仅支持Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元、Atlas 200T A2 Box16 异构子框。

功能说明

点对点通信Send操作接口,将当前节点指定位置的数据发送至目的节点。

函数原型

HcclResult HcclSend(void* sendBuf, uint64_t count, HcclDataType dataType, uint32_t destRank, HcclComm comm, aclrtStream stream)

参数说明

参数名输入/输出描述
sendBuf输入源数据buffer地址。
count输入发送数据的个数。
dataType输入发送数据的数据类型,HcclDataType类型。
针对Ascend 950PR/Ascend 950DT,支持数据类型:int8、uint8、int16、uint16、int32、uint32、int64、uint64、float8-e5m2、float8-e4m3、float8-e8m0、hifloat8、float16、float32、float64、bfp16。
针对Atlas A3 训练系列产品/Atlas A3 推理系列产品,支持数据类型:int8、uint8、int16、uint16、int32、uint32、int64、uint64、float16、float32、float64、bfp16。
针对Atlas A2 训练系列产品/Atlas A2 推理系列产品,支持数据类型:int8、uint8、int16、uint16、int32、uint32、int64、uint64、float16、float32、float64、bfp16。
针对Atlas 训练系列产品,支持数据类型:int8、uint8、int16、uint16、int32、uint32、int64、uint64、float16、float32、float64。
destRank输入通信域内数据接收端的rank编号。
comm输入集合通信操作所在的通信域。
stream输入本rank所使用的stream。

返回值

HcclResult:接口成功返回HCCL_SUCCESS,其他失败。

约束说明

HcclSend与HcclRecv接口采用同步调用方式,且必须配对使用。即一个进程调用HcclSend接口后,需要等到与之配对的HcclRecv接口接收数据后,才可以进行下一个接口调用,如下图所示。

调用示例

void *sendBuf = nullptr; void *recvBuf = nullptr; uint64_t count = 8; size_t mallocSize = count * sizeof(float); // 初始化通信域 uint32_t rankSize = 8; HcclComm hcclComm; HcclCommInitRootInfo(rankSize, &rootInfo, deviceId, &hcclComm); // 创建任务流 aclrtStream stream; aclrtCreateStream(&stream); // 执行 Send/Recv 操作,0/2/4/6卡发送数据,1/3/5/7接收数据 // HcclSend 与 HcclRecv 接口采用同步调用方式,且必须配对使用 if (deviceId % 2 == 0) { // 申请 Device 内存用于存放输入数据 aclrtMalloc(&sendBuf, mallocSize, ACL_MEM_MALLOC_HUGE_ONLY); // 初始化输入数据 aclrtMemcpy(sendBuf, mallocSize, hostBuf, mallocSize, ACL_MEMCPY_HOST_TO_DEVICE); // 执行 Send 操作 HcclSend(sendBuf, count, HCCL_DATA_TYPE_FP32, deviceId + 1, hcclComm, stream); } else { // 申请 Device 内存用于接收数据 aclrtMalloc(&recvBuf, mallocSize, ACL_MEM_MALLOC_HUGE_ONLY); // 执行 Recv 操作 HcclRecv(recvBuf, count, HCCL_DATA_TYPE_FP32, deviceId - 1, hcclComm, stream); } // 阻塞等待任务流中的集合通信任务执行完成 aclrtSynchronizeStream(stream); // 释放资源 aclrtFree(sendBuf); // 释放 Device 侧内存 aclrtFree(recvBuf); // 释放 Device 侧内存 aclrtDestroyStream(stream); // 销毁任务流 HcclCommDestroy(hcclComm); // 销毁通信域

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 15:14:30

CANN/HCOMM线程通知写入API

HcommWriteWithNotifyOnThread 【免费下载链接】hcomm HCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 产品支持情况 Ascend 950PR/Ascend 950DT&…

作者头像 李华
网站建设 2026/5/9 15:12:25

CANN/ops-math动态分区算子

DynamicPartition 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math 产品支持情况 产品是否支持 Ascend 950PR/Ascend 950DT √ Atlas A3 训练系列产品/Atlas A3 …

作者头像 李华
网站建设 2026/5/9 15:11:37

队列核心:FIFO原理与实战应用

一、队列核心概念队列是先进先出 FIFO 线性结构队尾:只允许入队队头:只允许出队先进入的元素先出去,后进入后出去生活类比:排队买票、食堂打饭、消息排队处理。二、队列基础五大操作push:队尾入队pop:队头出…

作者头像 李华
网站建设 2026/5/9 15:11:32

CANN PTO-ISA开发模式详解

开发模式详解 【免费下载链接】pto-isa Parallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations across Ascend p…

作者头像 李华