mindspore.ops.Broadcast

class mindspore.ops.Broadcast(root_rank, group=GlobalComm.WORLD_COMM_GROUP)[源代码]

对输入数据整组广播。

说明

集合中的所有进程的Tensor的shape和数据格式相同。

参数:
  • root_rank (int) - 表示发送源的进程编号。除发送数据的进程外,存在于所有进程中。

  • group (str) - 表示通信域。默认值:”hccl_world_group”。

输入:
  • input_x (tuple[Tensor]) - Tensor的shape为 \((x_1, x_2, ..., x_R)\)

输出:

tuple[Tensor],Tensor的shape与输入相同,即 \((x_1, x_2, ..., x_R)\) 。内容取决于 root_rank device的数据。

异常:
  • TypeError - root_rank不是int或group不是str。

支持平台:

Ascend GPU

样例:

说明

运行以下样例之前,需要配置好通信环境变量。

针对Ascend设备,用户需要准备rank表,设置rank_id和device_id,详见 Ascend指导文档

针对GPU设备,用户需要准备host文件和mpi,详见 GPU指导文档

该样例需要在多卡环境下运行。

>>> import mindspore as ms
>>> from mindspore import Tensor
>>> from mindspore.communication import init
>>> import mindspore.nn as nn
>>> import mindspore.ops as ops
>>> import numpy as np
>>>
>>> ms.set_context(mode=ms.GRAPH_MODE)
>>> init()
>>> class Net(nn.Cell):
...     def __init__(self):
...         super(Net, self).__init__()
...         self.broadcast = ops.Broadcast(1)
...
...     def construct(self, x):
...         return self.broadcast((x,))
...
>>> input_x = Tensor(np.ones([2, 4]).astype(np.int32))
>>> net = Net()
>>> output = net(input_x)
>>> print(output)
(Tensor(shape[2,4], dtype=Int32, value=
[[1, 1, 1, 1],
[1, 1, 1, 1]]),)