AllReduceOperation
功能
将多个通信卡上的数据进行计算,支持相加、取最大、最小、相乘四种计算,然后发送到每张卡上。
该算子涉及多卡相关操作,可根据实际需求配置HCCL相关环境变量,具体请参见《CANN 环境变量参考》中的“集合通信相关配置”章节。配置TLS等相关操作可查看对应设备的《HCCN Tool 接口参考》。
约束
rank、rankSize、rankRoot需满足以下条件。
- 0 ≤ rank < rankSize
- 0 ≤ rankRoot < rankSize
定义
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; std::string commDomain; };
成员
成员名称 |
描述 |
---|---|
rank |
每张卡所属通信编号。 |
rankSize |
通信的卡的数量。 |
rankRoot |
主通信编号。 |
allReduceType |
通信计算类型。 支持“sum”(相加),“prod”(相乘),“max”(取最大)和“min”(取最小)。 |
backend |
通信计算类型,仅支持“hccl”和“lccl”。 Atlas 推理系列产品仅支持backend为"hccl"。
|
hcclComm |
HCCL通信域指针。 默认为空,加速库为用户创建;若用户想要自己管理通信域,则需要传入该通信域指针,加速库使用传入的通信域指针来执行通信算子。 |
commMode |
通信模式,CommMode类型枚举值。HCCL多线程仅支持外部传入通信域方式。 |
rankTableFile |
集群信息的配置文件路径,用于单机以及多机通信场景,当前仅支持HCCL后端场景。 若单机配置了rankTable,则以ranktable来初始化通信域。 配置请参见。 |
commDomain |
通信Device组用通信域名标识,多通信域时使用,当前仅支持“hccl”。 |
输入
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
x |
[-1,…,-1] -1表示当前维度的大小没有约束。 |
|
ND |
输入Tensor。 |
输出
参数 |
维度 |
数据类型 |
格式 |
描述 |
---|---|---|---|---|
output |
[-1,…,-1] -1表示当前维度的大小没有约束。 |
|
ND |
输出Tensor。 |