code: def reduce(
      in_params,
      out_params,
      map_expr,
      reduce_expr,
      post_map_expr,
      identity,
      name,
      **kwargs,
  ):
      """Creates a global reduction kernel function.
  
      This function uses :func:`~chainer.backends.cuda.memoize` to cache the
      resulting kernel object, i.e. the resulting kernel object is cached for
      each argument combination and CUDA device.
  
      The arguments are the same as those for
      :class:`cupy.ReductionKernel`, except that the ``name`` argument is
      mandatory.
  
      """
      check_cuda_available()
      return cupy.ReductionKernel(
          in_params,
          out_params,
          map_expr,
          reduce_expr,
          post_map_expr,
          identity,
          name,
          **kwargs,
      )
  
imports: import binascii
  import functools
  import itertools
  import os
  import threading
  import time
  import typing
  import warnings
  import numpy
  import six
  import chainer
  from chainer import _backend
  from chainer.backends import _cpu
  from chainer.backends import intel64
  from chainer.configuration import config
  from chainer import types
  import chainerx
label_desc: Use image node_id 15 for calling a global function with example usage: reduce(in_params, out_params, map_expr, reduce_expr, post_map_expr, identity, name) and returns: cupy