return data, handle
@staticmethod
def broadcast(data, src=None, group=None, async_op=False, group_src=None):
if group_src is not None:
handle = dist.broadcast(data, group=group, group_src=group_src, async_op=async_op)
else:
handle = dist.broadcast(data, src, group, async_op)
if async_op and handle is not None:
handle.wait()
@staticmethod
def scatter(output, scatter_list, src=None, group=None, async_op=False, group_src=None):
if group_src is not None:
handle = dist.scatter(
output, scatter_list, group=group, group_src=group_src, async_op=async_op
)
else:
handle = dist.scatter(output, scatter_list, src=src, group=group, async_op=async_op)
if async_op and handle is not None:
handle.wait()
return output
@staticmethod
def isend(tensor, dst=None, group=None, tag=0):
return dist.isend(tensor, dst, group, tag)