AllReduceOperation

功能

将多个通信卡上的数据进行计算,支持相加、乘、取最大值取最小值四种计算,然后发送到每张卡上。

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

约束

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

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

定义

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

成员

成员名称

描述

rank

每个进程的编号。

rankSize

总的进程数,不能为0。

rankRoot

主进程编号。

allReduceType

reduceType指示。支持“sum”,“prod”,“max”和“min”。

backend

通信后端指示,

backend为"hccl"时,支持“sum”,“prod”,“max”和“min”。

backend为"lccl"时,支持“sum”,“max”和“min”。

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/int8/int16/int32/int64/bf16

ND

输出

参数

维度

数据类型

格式

output

[-1,…,-1]

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

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

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

ND