code: def test_grid_group(self):
      @jit.rawkernel()
      def test_grid(x):
          g = jit.cg.this_grid()
          if g.thread_rank() == 0:
              x[0] = g.is_valid()
          if g.thread_rank() == 1:
              x[1] = g.size()
          if g.thread_rank() == 32:  # on the 2nd group
              # Note: this is not yet possible...
              # x[2], x[3], x[4] == g.group_dim()
              g_dim = g.group_dim()
              x[2], x[3], x[4] = g_dim.x, g_dim.y, g_dim.z
          g.sync()  # this should just work!
  
      x = cupy.empty((16,), dtype=cupy.uint64)
      x[:] = -1  # = 2**64-1
      test_grid[2, 32](x)
      assert x[0] == 1
      assert x[1] == 64
      assert (x[2], x[3], x[4]) == (2, 1, 1)
      assert (x[5:] == 2**64 - 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 3 for calling the TestCooperativeGroups obj's underlying member method code with example usage: obj.test_grid_group() without return types