code: def forward(ctx, group, out_tensor_list, *tensors):
      ctx.group = group
      ctx.input_tensor_size_list = [
          tensors[i].size()
          for i in range(dist.get_world_size(group=group))
      ]
      my_rank = dist.get_rank(group=group)
      tensors = tuple(t.contiguous() for t in tensors)
      # Implement it on means of scatter/gather, send/recv async operations have issues
      if dist.get_backend(group=group) is dist.Backend.GLOO:
          for i in range(dist.get_world_size(group=group)):
              to_send = None
              if i == my_rank:
                  to_send = list(tensors)
              dist.scatter(out_tensor_list[i], to_send, i, group=group)
      else:
          dist.all_to_all(
              out_tensor_list,
              list(tensors),
              group=group,
          )
      return tuple(out_tensor_list)
  
imports: import torch
  import torch.distributed
  from torch.autograd import Function
  from torch.distributed import group, ReduceOp
label_desc: Use image node_id 1 for calling the _AlltoAll obj's underlying member method code with example usage: obj.forward(ctx, group, out_tensor_list) and returns: tuple