class_docstr: Gather output samples from contiguous alone experts back to [batch x
  sequences]. Works symmetrically with MOEScatter.
class_docstr_tok: ["Gather","output","samples","from","contiguous","alone","experts","back","to","[","batch","x","sequences","]",".","Works","symmetrically","with","MOEScatter","."]
code: def backward(ctx, grad_out):
      pos, local_expert_count, global_expert_count = ctx.saved_tensors
      fwd_batch_size, world_size = ctx.moe_args
      grad_out_buf = _local_scatter(grad_out.contiguous(), pos)
      if world_size > 1:
          global_grad_out_buf = fmoe_cuda.global_scatter(
              grad_out_buf,
              local_expert_count,
              global_expert_count,
              fwd_batch_size,
              world_size,
          )
      else:
          global_grad_out_buf = grad_out_buf
      return global_grad_out_buf, None, None, None, None, None
  
imports: import torch
  from torch.autograd import Function
  import fmoe_cuda
  from .utils import get_torch_default_comm
label_desc: Use image node_id 2 for calling the MOEGather obj's underlying member method code with example usage: obj.backward(ctx, grad_out) and returns: global_grad_out_buf,  None,  None,  None,  None,  None