code: def main():
      N = 8
      module = cupy.RawModule(
          code=code,
          options=("-std=c++11",),
          name_expressions=("kernel<float>", "kernel<double>"),
      )
  
      # The kernel computes out = A*B+C where A, B and C are 4x4 matrices.
      # A and B are arrays of N such matrices and C is a matrix kernel parameter.
  
      for ctype, dtype in zip(
          ("float", "double"), (numpy.float32, numpy.float64)
      ):
          A = cupy.random.rand(16 * N, dtype=dtype).reshape(N, 4, 4)
          B = cupy.random.rand(16 * N, dtype=dtype).reshape(N, 4, 4)
          C = numpy.random.rand(16).astype(dtype).reshape(4, 4)
          out = cupy.empty_like(A)
  
          Matrix = numpy.dtype(
              {"names": ["value"], "formats": [(dtype, (4, 4))]}
          )
  
          kernel = module.get_function("kernel<{}>".format(ctype))
          args = (A, B, C.ravel().view(Matrix), out)
          kernel((1,), (N,), args)
  
          expected = cupy.matmul(A, B) + cupy.asarray(C[None, :, :])
  
          cupy.testing.assert_array_almost_equal(expected, out)
          print(
              "Kernel output matches expected value for "
              "type '{}'.".format(ctype)
          )
  
label_desc: Use image node_id 1 for calling a global function with example usage: main() without return types