mindspore.mint.distributed.irecv

View Source On Gitee
mindspore.mint.distributed.irecv(tensor, src=0, group=None, tag=0)[source]

Receive tensors from src asynchronously.

Note

Only support PyNative mode, Graph mode is not currently supported.

Parameters
  • tensor (Tensor) – Tensor to fill with received data.

  • src (int, optional) – A required integer identifying the source rank(global rank). Default: 0.

  • group (str, optional) – The communication group to work on. If None, which means "hccl_world_group" in Ascend. Default: None.

  • tag (int, optional) – A required integer identifying the send/recv message tag. The message will be received by the Send op with the same "tag". Default: 0. It is a reserved parameter currently.

Returns

CommHandle, CommHandle is an async work handle, if async_op is set to True. CommHandle will be None, when async_op is False.

Raises
  • TypeError – If the type of tensor is not Tensor, If src is not an int or group is not a str.

  • ValueError – If the rank ID of the process is greater than the rank size of the communication group.

Supported Platforms:

Ascend

Examples

Note

Before running the following examples, you need to configure the communication environment variables.

For Ascend devices, it is recommended to use the msrun startup method without any third-party or configuration file dependencies. Please see the msrun start up for more details.

This example should be run with 2 devices.

>>> from mindspore.mint.distributed import init_process_group
>>> from mindspore.mint.distributed import irecv
>>> from mindspore import Tensor
>>> import numpy as np
>>>
# Launch 2 processes.
Process 0 send the following array to Process 1
[[1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1.]]
>>> init_process_group()
>>> x = Tensor(np.zeros([2, 8]).astype(np.float32))
# Process 1 receive tensor from Process 0.
>>> handle = irecv(x, src=0)
>>> handle.wait()
>>> print(x)
[[1. 1. 1. 1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1. 1. 1. 1.]]