class_docstr: A fake process group (not related to FakeTensor) is a process group which
  doesn't actually do any communication, it just hallucinates some
  communication.  You can run a single rank with a fake process group
  without needing multiple processes (simulates per-rank behavior)
  
  NOTE: This is not a real process group, and it would produce wrong results
  for every collective. It should be used as a convinient tool when playing
  with distributed but don't care about the actual data.
class_docstr_tok: ["A","fake","process","group","(","not","related","to","FakeTensor",")","is","a","process","group","which","does","n't","actually","do","any","communication",",","it","just","hallucinates","some","communication",".","You","can","run","a","single","rank","with","a","fake","process","group","without","needing","multiple","processes","(","simulates","per-rank","behavior",")","NOTE",":","This","is","not","a","real","process","group",",","and","it","would","produce","wrong","results","for","every","collective",".","It","should","be","used","as","a","convinient","tool","when","playing","with","distributed","but","do","n't","care","about","the","actual","data","."]
code: def alltoall_base(
      self,
      output_tensor: Tensor,
      input_tensor: Tensor,
      output_split_sizes: List[int],
      input_split_sizes: List[int],
      opts=AllToAllOptions(),
  ):
      return ret_work(output_tensor)
  
imports: import torch.distributed
  from torch._C._distributed_c10d import _create_work_from_future, AllgatherOptions, AllreduceOptions, BarrierOptions, ReduceScatterOptions, BroadcastOptions, ScatterOptions, AllToAllOptions
  from torch.futures import Future
  from typing import List
  from torch import Tensor
label_desc: Use image node_id 12 for calling the FakeProcessGroup obj's underlying member method code with example usage: obj.alltoall_base(output_tensor, input_tensor, output_split_sizes, input_split_sizes, opts) and returns: ret_work