HcclChannelAcquire【免费下载链接】hcommHCOMMHuawei Communication是HCCL的通信基础库提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持[!NOTE]说明 针对Atlas A2 训练系列产品/Atlas A2 推理系列产品仅支持Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元、Atlas 200T A2 Box16 异构子框。功能说明基于通信域获取多个通信通道如果通信域中没有对应的通信通道则直接创建。channel是否复用依据commId engine remoterank channelProtocol组成的channel唯一标识判断。函数原型HcclResult HcclChannelAcquire(HcclComm comm, CommEngine engine, const HcclChannelDesc *channelDescs, uint32_t channelNum, ChannelHandle *channels)参数说明参数名输入/输出描述comm输入通信域句柄。HcclComm类型的定义如下typedef void *HcclComm;engine输入通信引擎类型。CommEngine类型的定义可参见CommEngine。channelDescs输入通信通道描述列表列表长度为channelNum。HcclChannelDesc类型的定义可参见HcclChannelDesc通过HcclRankGraphGetLinks函数获取。channelNum输入通信通道数量channelNum的取值范围为(0, 1024 * 1024]。channels输出通信通道句柄列表通信通道句柄列表长度为channelNum。返回值HcclResult接口成功返回HCCL_SUCCESS其他失败。约束说明当前CommEngine配置为CCU时不支持外部配置NotifyNum默认分配8个CCU Notify。当前CommEngine配置为CCU时不支持交换额外自定义内存仅支持交换通信域的HcclBuffer。调用示例以批量通信通道为例// 1. 调用 HcclRankGraphGetLinks 获取链路信息 CommLink *linkList nullptr; uint32_t listSize; CHK_RET(HcclRankGraphGetLinks(comm, netLayer, myRank, rank, linkList, listSize)); // 2. 遍历每个 CommLink填充 HcclChannelDesc uint32_t channelNum listSize; std::vectorHcclChannelDesc channelDescVec(channelNum); for (uint32_t idx 0; idx listSize; idx) { HcclChannelDesc channelDesc; HcclChannelDescInit(channelDesc, 1); channelDesc.remoteRank rank; CommLink link linkList[idx]; // 核心映射从 CommLink 提取 Endpoint 信息 channelDesc.localEndpoint.protocol link.srcEndpointDesc.protocol; channelDesc.localEndpoint.commAddr link.srcEndpointDesc.commAddr; channelDesc.localEndpoint.loc link.srcEndpointDesc.loc; channelDesc.remoteEndpoint.protocol link.dstEndpointDesc.protocol; channelDesc.remoteEndpoint.commAddr link.dstEndpointDesc.commAddr; channelDesc.remoteEndpoint.loc link.dstEndpointDesc.loc; channelDesc.channelProtocol link.linkAttr.linkProtocol; channelDesc.notifyNum NORMAL_NOTIFY_NUM; channelDescVec[idx] channelDesc; } // 3. 批量创建 Channel HcclComm comm; CommEngine engine CommEngine::COMM_ENGINE_CPU_TS; std::vectorChannelHandle channels(channelNum); HcclChannelAcquire(comm, engine, channelDescVec.data(), channelNum, channels.data());【免费下载链接】hcommHCOMMHuawei Communication是HCCL的通信基础库提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考