code: def build_inner(
      self,
      context,
      type_aliases=(),
      var_values=(),
      more_preamble="",
      more_arguments=(),
      declare_types=(),
      options=None,
      devices=None,
  ):
      renderer = self.get_renderer(
          type_aliases, var_values, context, options
      )
  
      arg_list = renderer.render_argument_list(
          self.arguments, more_arguments
      )
  
      type_decl_preamble = renderer.get_type_decl_preamble(
          context.devices[0], declare_types, arg_list
      )
  
      return ReductionKernel(
          context,
          renderer.type_aliases["reduction_t"],
          renderer(self.neutral),
          renderer(self.reduce_expr),
          renderer(self.map_expr),
          renderer.render_argument_list(self.arguments, more_arguments),
          name=renderer(self.name_prefix),
          options=options,
          preamble=(
              type_decl_preamble
              + "\n"
              + renderer(f"{self.preamble}\n{more_preamble}")
          ),
      )
  
imports: from dataclasses import dataclass
  from typing import Any, List, Optional, Tuple, Union
  import numpy
  import pyopencl
  from pyopencl.tools import DtypedArgument, KernelTemplateBase, context_dependent_memoize, dtype_to_ctype, _process_code_for_macro
label_desc: Use image node_id 2 for calling the ReductionTemplate obj's underlying member method code with example usage: obj.build_inner(context, type_aliases, var_values, more_preamble, more_arguments, declare_types, options, devices) and returns: ReductionKernel