code: def testSplitTypeHWUnguided(self):
      try:
          MPI.COMM_SELF.Split_type(MPI.COMM_TYPE_SHARED).Free()
      except NotImplementedError:
          self.skipTest("mpi-comm-split_type")
      if MPI.COMM_TYPE_HW_UNGUIDED == MPI.UNDEFINED:
          self.skipTest("mpi-comm-split_type-hw_unguided")
      hwcomm = [self.COMM]
      while len(hwcomm) < 32:
          rank = hwcomm[-1].Get_rank()
          info = MPI.Info.Create()
          comm = hwcomm[-1].Split_type(
              MPI.COMM_TYPE_HW_UNGUIDED,
              key=rank,
              info=info,
          )
          if comm != MPI.COMM_NULL:
              self.assertTrue(info.Get("mpi_hw_resource_type"))
              self.assertLess(comm.Get_size(), hwcomm[-1].Get_size())
          info.Free()
          if comm == MPI.COMM_NULL:
              break
          hwcomm.append(comm)
      for comm in hwcomm[1:]:
          comm.Free()
  
imports: from mpi4py import MPI
  import mpiunittest
label_desc: Use image node_id 21 for calling the BaseTestComm obj's underlying member method code with example usage: obj.testSplitTypeHWUnguided() without return types