AllGatherOperation

功能

把不同的卡的数据Concat起来。

该算子涉及多卡相关操作,可根据实际需求配置HCCL相关环境变量,具体请参见《环境变量参考》执行相关 > 集合通信与分布式训练 > 集合通信相关配置章节。配置TLS等相关操作可查看对应设备的。

约束

rank、rankSize、rankRoot需满足以下条件。

输出output的维度比输入x的维度多一维。

多用户使用时需要使用ATB_SHARE_MEMORY_NAME_SUFFIX环境变量(请参见Transformer加速库环境变量说明)进行共享内存的区分,以进行初始化信息同步。

当使用加速库的通信算子异常退出时,需要清空残留数据,避免影响之后的使用,命令参考如下:

rm -rf /dev/shm/sem.lccl*
rm -rf /dev/shm/sem.hccl*
ipcrm -a

定义

struct AllGatherParam {
    int rank = 0;
    int rankSize = 0;
    int rankRoot = 0;
    std::string backend = "hccl";
    HcclComm hcclComm = nullptr;
    CommMode commMode = COMM_MULTI_PROCESS;
    std::string rankTableFile;
};

成员

成员名称

描述

rank

每个进程的编号。

rankSize

总的进程数,不能为0。

rankRoot

主进程编号。

backend

通信后端指示,仅支持“hccl”和“lccl”。

hcclComm

HCCL通信域接口获取的地址指针。

commMode

通信模式,CommMode类型枚举值。Atlas 推理系列产品(配置Ascend 310P AI处理器)不支持lccl通信模式。hccl多线程只支持外部传入通信域方式、

rankTableFile

集群信息的配置文件路径,用于多机通信场景,当前仅支持hccl后端场景。

输入

参数

维度

数据类型

格式

描述

x

[-1,…,-1]

-1表示当前维度的大小没有约束。

"hccl": float16/float/int8/int32/int64/bf16

"lccl": float16/float/int16/int32/bf16

ND

维度小于8。

输出

参数

维度

数据类型

格式

描述

output

[rankSize, -1,…,-1]

-1表示当前维度的大小没有约束。

"hccl": float16/float/int8/int32/int64/bf16

"lccl": float16/float/int16/int32/bf16

ND

维度小于等于8。