code: def check_custom(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 = CustomMultiNodeEvaluator(comm, iterator, model)
  
      result = evaluator(None)
  
      iterator.reset()
      expected = comm.allreduce_obj(sum(2 for batch in iterator))
  
      if comm.rank == 0:
          assert expected == result
  
      else:
          assert result 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 3 for calling a global function with example usage: check_custom(comm, length, bs) without return types