将多个通信卡上的数据进行计算,支持相加、乘、取最大值取最小值四种计算,然后发送到每张卡上。
该算子涉及多卡相关操作,可根据实际需求配置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 |