reduce

Applicability

Product

Supported (√/x)

Atlas 350 Accelerator Card

√

Atlas A3 training product/Atlas A3 inference product

√

Atlas A2 training product/Atlas A2 inference product

√

Atlas 200I/500 A2 inference product

☓

Atlas inference product

☓

Atlas training product

√

Function

Performs the sum operation (or other reduction operations) on the data of all ranks and sends the result to the specified position on the root rank.

Prototype

1
def reduce(tensor, reduction, root_rank, fusion=0, fusion_id=-1, group="hccl_world_group")

Parameters

Parameter

Input/Output

Description

tensor

Input

TensorFlow tensor type.

Atlas 350 Accelerator Card: The supported data types are int8, int16, int32, int64, uint64, float16, float32, float64, and bfp16. Data types int64, uint64, and float64 supports only intra-node communication.

Atlas A3 training product/Atlas A3 inference product: The supported data types are int8, int16, int32, int64, float16, float32, and bfp16.

Atlas A2 training product/Atlas A2 inference product: The supported data types are int8, int16, int32, int64, float16, float32, and bfp16. Note that the performance will deteriorate for the int64 data type.

Atlas training product: The supported data types are int8, int32, int64, float16, and float32.

reduction

Input

Reduction operation, string type.

Atlas 350 Accelerator Card: The supported operation types are sum, max, and min.

Atlas A3 training product/Atlas A3 inference product: The supported operation types are sum, max, min, and prod. In the current version, the prod operation does not support the int16 or bfp16 data type.

Atlas A2 training product/Atlas A2 inference product: The supported operation types are sum, max, min, and prod. In the current version, the prod operation does not support the int16 or bfp16 data type.

root_rank

Input

Rank ID of the root rank, and must be a rank ID in the group, int type.

fusion

Input

reduce operator fusion flag, int type. The value can be one of the following:

  • 0: disabled. The Reduce operator is not fused with other Reduce operators.
  • 2: enabled. Operators with the same fusion_id are fused.

fusion_id

Input

reduce operator fusion ID, int type.

If fusion is set to 2, Reduce operators with the same fusion_id are fused during network compilation.

group

Input

A string containing a maximum of 128 bytes, including the end character.

Group name, which can be a user-defined value or hccl_world_group.

Returns

The result tensor after the reduce operation is performed on the input tensor.

Restrictions

  • The caller rank must be within the range defined by the group argument passed to this API call. Otherwise, the API call fails.
  • The input tensor size must be less than or equal to 8 GB.
  • For the reduce operator fusion, only the reduction type sum is supported.

Example

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.reduce(tensor, "sum", 0)