allreduce
产品支持情况
产品  | 
是否支持  | 
|---|---|
√  | 
|
√  | 
|
x  | 
|
x  | 
|
√  | 
|
√  | 
|
x  | 
 针对
功能说明
集合通信算子AllReduce的操作接口,将group内所有节点的输入数据进行reduce操作后,再把结果发送到所有节点的输出buf,其中reduce操作类型由reduction参数指定。

函数原型
1 | def allreduce(tensor, reduction, fusion=1, fusion_id=-1, group = "hccl_world_group")  | 
参数说明
参数名  | 
输入/输出  | 
描述  | 
|---|---|---|
tensor  | 
输入  | 
TensorFlow的tensor类型。 针对 针对 针对 针对Atlas 300I Duo 推理卡,支持的数据类型为:int8、int16、int32、float16、float32。  | 
reduction  | 
输入  | 
String类型。 reduce的op类型,可以为max、min、prod和sum。  说明:  
针对 针对 针对Atlas 300I Duo 推理卡,当前版本“prod”、“max”、“min”操作不支持int16数据类型。  | 
fusion  | 
输入  | 
int类型。 allreduce算子融合标识,支持以下取值: 
  | 
fusion_id  | 
输入  | 
int类型。 allreduce算子的融合id。 当“fusion”取值为“2”时,网络编译时会对相同fusion_id的allreduce的算子进行融合。  | 
group  | 
输入  | 
String类型,最大长度为128字节,含结束符。 group名称,可以为用户自定义group或者"hccl_world_group"。  | 
返回值
tensor:对输入tensor执行完allreduce操作之后的结果tensor。
约束说明
- 调用该接口的rank必须在当前接口入参group定义的范围内,不在此范围内的rank调用该接口会失败。
 - 每个rank只能有一个输入。
 - allreduce上游节点暂不支持variable算子。
 - 该接口要求输入tensor的数据量不超过8GB。
 - allreduce算子融合只支持reduction为sum类型的算子。
 
调用示例
以下仅为代码片段,不可执行,调用HCCL Python接口进行集合通信操作的完整示例可参见样例代码。
1 2 3  | from npu_bridge.hccl import hccl_ops tensor = tf.random_uniform((1, 3), minval=1, maxval=10, dtype=tf.float32) result = hccl_ops.allreduce(tensor, "sum")  |