昇腾社区首页
中文
注册
开发者
下载

HcclChannelAcquire

产品支持情况

产品

是否支持

Atlas A3 训练系列产品/Atlas A3 推理系列产品

Atlas A2 训练系列产品/Atlas A2 推理系列产品

Atlas 200I/500 A2 推理产品

Atlas 推理系列产品

Atlas 训练系列产品

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

功能说明

基于通信域获取多个通信通道,如果通信域中没有对应的通信通道则直接创建。

channel是否复用,依据 commId + engine + remoterank + channelProtocol 组成的channel唯一标识判断。

函数原型

1
HcclResult HcclChannelAcquire(HcclComm comm, CommEngine engine, const HcclChannelDesc *channelDescs, uint32_t channelNum, ChannelHandle *channels)

参数说明

参数名

输入/输出

描述

comm

输入

通信域句柄。

HcclComm类型的定义如下:

1
typedef void *HcclComm;

engine

输入

通信引擎类型。

CommEngine类型的定义可参见CommEngine

channelDescs

输入

通信通道描述列表,列表长度为channelNum。

HcclChannelDesc类型的定义可参见HcclChannelDesc

channelNum

输入

通信通道数量,channelNum的取值范围为(0, 1024 * 1024]。

channels

输出

通信通道句柄列表,通信通道句柄列表长度为channelNum。

返回值

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

约束说明

调用示例

以rank0与rank1和rank2进行批量通信通道获取为例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
uint32_t channelNum = 2;
std::vector<HcclChannelDesc> channelDesc(channelNum);
HcclChannelDescInit(channelDesc.data(), channelNum);

channelDesc[0].remoteRank = 1;
channelDesc[0].channelProtocol = CommProtocol::COMM_PROTOCOL_HCCS;
channelDesc[0].notifyNum = 3;

channelDesc[1].remoteRank = 2;
channelDesc[1].channelProtocol = CommProtocol::COMM_PROTOCOL_HCCS;
channelDesc[1].notifyNum = 3;

HcclComm comm;
CommEngine engine = CommEngine::COMM_ENGINE_CPU_TS;
std::vector<ChannelHandle> channels(channelNum);
HcclChannelAcquire(comm, engine, channelDesc.data(), channelNum, channels.data());