code: def _make_inplace_broadcast_group_fn():
      if _executing_eagerly():
          # These are just a few calls of broadcast_, no need to aggregate them in a tf.function
          def broadcast_group(
              variable_lists, root_rank, process_set: ProcessSet
          ):
              for variables in variable_lists:
                  broadcast_(
                      variables, root_rank, process_set=process_set
                  )
  
          return broadcast_group
      else:
          # Graph mode requires an Op
          def broadcast_group(
              variable_lists, root_rank, process_set: ProcessSet
          ):
              return tf.group(
                  *[
                      broadcast_(
                          variables, root_rank, process_set=process_set
                      )
                      for variables in variable_lists
                  ]
              )
  
          return broadcast_group
  
file_path: horovod/horovod/tensorflow/functions.py
imports: import io
  import cloudpickle
  import numpy
  import tensorflow
  from tensorflow.python.framework import ops
  from horovod.tensorflow.mpi_ops import allgather, broadcast, broadcast_
  from horovod.tensorflow.mpi_ops import rank, size
  from horovod.tensorflow.util import _cache, _executing_eagerly, _make_subgraph
  from horovod.common.process_sets import ProcessSet, global_process_set
label_desc: Use image node_id 2 for calling a global function with example usage: _make_inplace_broadcast_group_fn() and returns: broadcast_group, broadcast_group, tf