class_docstr: Mesh implemented using explicit device placement.
docstr: Grouped allreduce, (across the given dimensions).
  
  Args:
    x: a LaidOutTensor
    mesh_axes: a list of integers - the mesh dimensions to be reduced
    reduction_fn_string: "SUM" or "MAX"
  Returns:
    a LaidOutTensor
docstr_tok: ["Grouped","allreduce",",","(","across","the","given","dimensions",")",".","Args",":","x",":","a","LaidOutTensor","mesh_axes",":","a","list","of","integers","-","the","mesh","dimensions","to","be","reduced","reduction_fn_string",":","``","SUM","''","or","``","MAX","''","Returns",":","a","LaidOutTensor"]
code: def allreduce(self, x, mesh_axes, reduction_fn_string):
      """Grouped allreduce, (across the given dimensions).
  
      Args:
        x: a LaidOutTensor
        mesh_axes: a list of integers - the mesh dimensions to be reduced
        reduction_fn_string: "SUM" or "MAX"
      Returns:
        a LaidOutTensor
      """
      return self._collective_with_groups(
          x,
          mesh_axes,
          functools.partial(
              allreduce_ring, reduction_fn_string=reduction_fn_string
          ),
      )
  
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 4 for calling the PlacementMeshImpl obj's underlying member method code with example usage: obj.allreduce(x, mesh_axes, reduction_fn_string) and returns: self