code: def check_generic(comm, length, bs):
      assert bs > 0
      assert length > 0
      a = list(range(comm.rank, length, comm.size))
      b = list(range(comm.rank, length, comm.size))
      c = list(range(comm.rank, length, comm.size))
  
      model = ExampleModel()
      dataset = TupleDataset(a, b, c)
      iterator = SerialIterator(
          dataset, bs, shuffle=False, repeat=False
      )
      evaluator = GenericMultiNodeEvaluator(comm, iterator, model)
  
      results = evaluator(None)
  
      # Make expected answer
      iterator.reset()
      s = [
          [
              aa + bb + cc  # Same calculation as model
              for aa, bb, cc in batch
          ]
          for batch in iterator
      ]
      s = comm.gather_obj(s)
  
      if comm.rank == 0:
          # flatten list of lists gathered
          expected = []
          for e in zip(*s):
              expected.extend(e)
  
          for e, r in zip(expected, results):
              chainer.testing.assert_allclose(e, r)
  
      else:
          assert results is None
  
file_path: chainer/tests/chainermn_tests/extensions_tests/test_multi_node_evaluator.py
imports: import chainer
  import chainer.testing
  from chainer.datasets import TupleDataset
  from chainer.iterators import SerialIterator
  from chainermn import create_communicator
  from chainermn.extensions import GenericMultiNodeEvaluator
label_desc: Use image node_id 1 for calling a global function with example usage: check_generic(comm, length, bs) without return types