code: def test_thread_block_group_cu116_new_APIs(self):
      @jit.rawkernel()
      def test_thread_block(x):
          g = jit.cg.this_thread_block()
          if g.thread_rank() == 0:
              x[0] = g.num_threads()
          if g.thread_rank() == 1:
              d_th = g.dim_threads()
              x[1], x[2], x[3] = d_th.x, d_th.y, d_th.z
          g.sync()
  
      x = cupy.empty((16,), dtype=cupy.int64)
      x[:] = -1
      test_thread_block[1, 32](x)
      assert x[0] == 32
      assert (x[1], x[2], x[3]) == (32, 1, 1)
      assert (x[4:] == -1).all()
  
file_path: cupy/tests/cupyx_tests/jit_tests/test_cooperative_groups.py
imports: import pytest
  import cupy
  from cupy.cuda import runtime
  from cupyx import jit
label_desc: Use image node_id 2 for calling the TestCooperativeGroups obj's underlying member method code with example usage: obj.test_thread_block_group_cu116_new_APIs() without return types