code: def test_simple_kernel_2(self):
      mod = SourceModule(
          """
          __global__ void multiply_them(float *dest, float *a, float *b)
          {
            const int i = threadIdx.x;
            dest[i] = a[i] * b[i];
          }
          """
      )
  
      multiply_them = mod.get_function("multiply_them")
  
      a = np.random.randn(400).astype(np.float32)
      b = np.random.randn(400).astype(np.float32)
      a_gpu = drv.to_device(a)
      b_gpu = drv.to_device(b)
  
      dest = np.zeros_like(a)
      multiply_them(drv.Out(dest), a_gpu, b_gpu, block=(400, 1, 1))
      assert la.norm(dest - a * b) == 0
  
      drv.Context.synchronize()
      # now try with offsets
      dest = np.zeros_like(a)
      multiply_them(
          drv.Out(dest),
          np.intp(a_gpu) + a.itemsize,
          b_gpu,
          block=(399, 1, 1),
      )
  
      assert la.norm(dest[:-1] - a[1:] * b[:-1]) == 0
  
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 3 for calling the TestDriver obj's underlying member method code with example usage: obj.test_simple_kernel_2() without return types