class_docstr: Mesh implemented using explicit device placement.
docstr: Grouped allconcat (like MPI allgather followed by concat).
  
  Args:
    x: a LaidOutTensor
    mesh_axis: an integer - the mesh axis along which to group
    concat_axis: an integer (the Tensor axis along which to concatenate)
  Returns:
    a LaidOutTensor
docstr_tok: ["Grouped","allconcat","(","like","MPI","allgather","followed","by","concat",")",".","Args",":","x",":","a","LaidOutTensor","mesh_axis",":","an","integer","-","the","mesh","axis","along","which","to","group","concat_axis",":","an","integer","(","the","Tensor","axis","along","which","to","concatenate",")","Returns",":","a","LaidOutTensor"]
code: def allconcat(self, x, mesh_axis, concat_axis):
      """Grouped allconcat (like MPI allgather followed by concat).
  
      Args:
        x: a LaidOutTensor
        mesh_axis: an integer - the mesh axis along which to group
        concat_axis: an integer (the Tensor axis along which to concatenate)
      Returns:
        a LaidOutTensor
      """
      return self._collective_with_groups(
          x,
          [mesh_axis],
          functools.partial(allconcat_ring, concat_axis=concat_axis),
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import functools
  import os
  import random
  from mesh_tensorflow import ops_with_redefined_builtins
  from six.moves import xrange
  import tensorflow.compat.v1
label_desc: Use image node_id 5 for calling the PlacementMeshImpl obj's underlying member method code with example usage: obj.allconcat(x, mesh_axis, concat_axis) and returns: self