code: def test_static_array(self):
      code = """
  struct double5 {
      double value[5];
      __device__ const double& operator[](size_t i) const { return value[i]; }
  };
  
  extern "C" __global__ void test_kernel(const double* a, double5 b, double* x) {
    int i = threadIdx.x;
    x[i] = a[i] + b[0] + b[1] + b[2] + b[3] + b[4];
  }
  """
  
      a_cpu = numpy.arange(24, dtype=numpy.float64)
      a = cupy.array(a_cpu)
      x = cupy.empty_like(a)
  
      func = _compile_func("test_kernel", code)
  
      # We cannot pass np.ndarray kernel arguments of size > 1
      b = numpy.arange(5).astype(numpy.float64)
      with pytest.raises(TypeError):
          func.linear_launch(a.size, (a, b, x))
  
      double5 = numpy.dtype(
          {"names": ["dummy"], "formats": [(numpy.float64, (5,))]}
      )
      func.linear_launch(a.size, (a, b.view(double5), x))
  
      expected = a_cpu + b.sum()
      testing.assert_array_equal(x, expected)
  
file_path: cupy/tests/cupy_tests/core_tests/test_function.py
imports: import unittest
  import pytest
  import numpy
  import cupy
  from cupy._core import core
  from cupy.cuda import compiler
  from cupy.cuda import runtime
  from cupy import testing
label_desc: Use image node_id 4 for calling the TestFunction obj's underlying member method code with example usage: obj.test_static_array() without return types