比较与torch.distributed.reduce的差异

查看源文件

torch.distributed.reduce

torch.distributed.reduce(
    tensor,
    dst,
    op=ReduceOp.SUM,
    group=None,
    async_op=False
)

更多内容详见torch.distributed.reduce

mindspore.communication.comm_func.reduce

mindspore.communication.comm_func.reduce(
    tensor,
    dst,
    op=ReduceOp.SUM,
    group=None,
)

更多内容详见mindspore.communication.comm_func.reduce

差异对比

PyTorch:该接口有五个入参:“tensor”将存储目标进程“dst”的reduce结果,并且所有张量必须具有相同的形状。只有“dst”进程会存储reduce后的结果,其他进程的张量保持不变。“group”是通信组,异步操作标志“async_op”。如果“async_op=True”,则返回一个异步工作句柄,否则返回“None”。

MindSpore:该接口有四个入参和一个返回值,每个进程的输入“tensor”必须具有相同的形状,并且不会存储reduce的结果,通信组“group”和“op”与pytorch相同。该接口目前不支持async_op的配置。返回的“output”是一个张量,存储目标进程的reduce的结果。只有“dst”进程的返回值才会存储reduce的结果,其他进程的返回值保持零张量,与输入张量的形状相同。

分类

子类

PyTorch

MindSpore

差异

参数

参数1

tensor

tensor

PyTorch:输入tensor,进行reduce操作后将结果写回tensor,MindSpore:不会将reduce的结果写回tensor

参数

参数2

dst

dst

一致

参数3

op

op

一致

参数4

group

group

一致

参数5

async_op

-

PyTorch:异步操作标志,MindSpore无此参数

返回值

单返回值

-

tensor

PyTorch:没有返回值。 MindSpore:返回reduce操作后返回的张量。