class_docstr: A device function for single elementwise operations.
      
code: def __init__(
      self,
      name,
      ufunc,
      routine_code,
      in_params,
      out_params,
      compute_dtypes,
  ):
      assert isinstance(name, str)
      assert isinstance(ufunc, _kernel.ufunc)
      assert isinstance(routine_code, str)
      assert isinstance(compute_dtypes, tuple)
      assert all(isinstance(t, numpy.dtype) for t in compute_dtypes)
      assert isinstance(in_params, list)
      assert all(isinstance(p, _TraceVariable) for p in in_params)
      assert isinstance(out_params, list)
      assert all(isinstance(p, _TraceArray) for p in out_params)
  
      self.name = name
      self.in_params = in_params
      self.out_params = out_params
      self.preamble = ufunc._preamble
      self.routine_code = routine_code
      self.compute_dtypes = compute_dtypes
  
imports: import string
  import numpy
  from cupy._core import _codeblock
  from cupy._core._fusion_variable import _TraceVariable
  from cupy._core._fusion_variable import _TraceArray
  from cupy._core._fusion_variable import _VariableSet
  from cupy._core import _fusion_thread_local
  from cupy._core import _kernel
  from cupy._core import _reduction
  from cupy._core._scalar import get_typename
label_desc: Use image node_id 1 to create a new _UfuncRoutine object  with example: obj = _UfuncRoutine(name, ufunc, routine_code, in_params, out_params, compute_dtypes)