code: def test_jit_link_module(self):
      from pycuda.compiler import DEFAULT_NVCC_FLAGS
  
      if drv.Context.get_device().compute_capability() < (3, 5):
          from pytest import skip
  
          skip(
              "need compute capability 3.5 or higher for dynamic parallelism"
          )
  
      test_outer_cu = """#include <cstdio>
          __global__ void test_kernel() {
              extern __global__ void test_kernel_inner();
              printf("Hello outer world!\\n");
              test_kernel_inner<<<2, 1>>>();
          }"""
  
      test_inner_cu = """#include <cstdio>
          __global__ void test_kernel_inner() {
              printf("  Hello inner world!\\n");
          }"""
  
      from pycuda.compiler import DynamicModule
  
      mod = DynamicModule()
      mod.add_source(
          test_outer_cu,
          nvcc_options=(
              ["-rdc=true", "-lcudadevrt"] + DEFAULT_NVCC_FLAGS
          ),
      )
      mod.add_source(
          test_inner_cu,
          nvcc_options=(
              ["-rdc=true", "-lcudadevrt"] + DEFAULT_NVCC_FLAGS
          ),
      )
      mod.add_stdlib("cudadevrt")
      mod.link()
  
      test_kernel = mod.get_function("test_kernel")
      test_kernel(grid=(2, 1), block=(1, 1, 1))
  
imports: import numpy
  import numpy.linalg
  from pycuda.tools import mark_cuda_test, dtype_to_ctype
  import pytest
  import pycuda.gpuarray
  import pycuda.driver
  from pycuda.compiler import SourceModule
label_desc: Use image node_id 31 for calling the TestDriver obj's underlying member method code with example usage: obj.test_jit_link_module() without return types