code: def testAllreduce(self):
      comm = self.INTERCOMM
      rank = comm.Get_rank()
      size = comm.Get_size()
      rsize = comm.Get_remote_size()
      for array, typecode in arrayimpl.loop():
          for op in (MPI.SUM, MPI.PROD, MPI.MAX, MPI.MIN):
              if skip_op(typecode, op):
                  continue
              sbuf = array(range(5), typecode)
              rbuf = array([-1] * 5, typecode)
              comm.Allreduce(sbuf.as_mpi(), rbuf.as_mpi(), op)
              max_val = maxvalue(rbuf)
              for i, value in enumerate(rbuf):
                  if op == MPI.SUM:
                      if (i * rsize) < max_val:
                          self.assertAlmostEqual(value, i * rsize)
                  elif op == MPI.PROD:
                      if (i**rsize) < max_val:
                          self.assertAlmostEqual(value, i**rsize)
                  elif op == MPI.MAX:
                      self.assertEqual(value, i)
                  elif op == MPI.MIN:
                      self.assertEqual(value, i)
  
imports: from mpi4py import MPI
  import mpiunittest
  import arrayimpl
label_desc: Use image node_id 11 for calling the BaseTestCCOBufInter obj's underlying member method code with example usage: obj.testAllreduce() without return types