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])