mindspore.dataset.Dataset.recv

查看源文件
mindspore.dataset.Dataset.recv(src=0, group=None)[源代码]

数据集通信接口,接收源 Dataset 使用 mindspore.dataset.Dataset.send 发送的数据。

每调用一次,仅接收一条数据。

说明

这是一个实验性API,后续可能修改或删除。

参数:
  • src (Union[int, list[int]], 可选) - 数据源 Dataset 对应的Rank ID或ID列表。指定当前进程的Rank ID时,将直接从自身获取一条数据。默认值: 0 ,表示从Rank 0接收数据。

  • group (str, 可选) - 指定通信组实例(由 mindspore.mint.distributed.init_process_group() 或者 mindspore.mint.distributed.new_group() 方法创建)的名称。默认值: None ,使用 GlobalComm.WORLD_COMM_GROUP

返回:

Union[Tensor, list[Tensor]],接收到的Tensor/Tensor列表。

样例:

>>> from mindspore.mint.distributed import init_process_group
>>> from mindspore.mint.distributed import get_rank
>>> import mindspore.dataset as ds
>>>
>>> # Launch 8 processes by msrun --worker_num=8 --local_worker_num=8 script.py
>>> init_process_group()
>>> this_rank = get_rank()
>>>
>>> # Create a dataset with 3 columns
>>> input_columns = ["column1", "column2", "column3"]
>>> dataset = ds.GeneratorDataset([(1, 2, 3), (3, 4, 5), (5, 6, 7)], column_names=input_columns)
>>>
>>> # Send data from rank: 0 to rank: [1, 2, 3, 4, 5, 6, 7]
>>> if this_rank == 0:
>>>     dataset.send(dst=[1, 2, 3, 4, 5, 6, 7])
>>> if this_rank in [1, 2, 3, 4, 5, 6, 7]:
>>>     data1 = dataset.recv()
>>>
>>> # Receive a data from the current dataset
>>> data2 = dataset.recv(src=get_rank())
>>>
>>> # Send data from rank: [1, 2, 3, 4, 5, 6, 7] to rank: 0
>>> if this_rank in [1, 2, 3, 4, 5, 6, 7]:
>>>     dataset.send()
>>> if this_rank == 0:
>>>     data3 = dataset.recv(src=[1, 2, 3, 4, 5, 6, 7])