code: def test_reduce():
      kind = get_context(test_ctx_name).kind
  
      for method, param in [
          ("sum", dict(acc_dtype="float32")),
          ("prod", dict(acc_dtype="float32")),
          ("max", {}),
          ("min", {}),
      ]:
          m = theano.tensor.fmatrix()
          f = theano.function(
              [m],
              getattr(m, method)(axis=0, **param),
              mode=mode_with_gpu,
          )
          # assert _check_stack_trace(f) this op is ok but since
          # it is using GpuCAReduceCuda that has an empty stack
          # trace, this assertion gives error.
          val = np.random.rand(10, 11).astype("float32")
          res = f(val)
          utt.assert_allclose(res, getattr(val, method)(axis=0))
          assert res.shape == (11,)
          topo = f.maker.fgraph.toposort()
          ops = [type(node.op) for node in topo]
  
          if kind == b"opencl" and method in ["max", "min"]:
              assert not (
                  GpuCAReduceCuda in ops
                  or GpuCAReduceCPY in ops
                  or GpuDnnReduction in ops
              )
          else:
              assert (
                  GpuCAReduceCuda in ops
                  or GpuCAReduceCPY in ops
                  or GpuDnnReduction in ops
              )
  
imports: from __future__ import absolute_import, print_function, division
  from nose.tools import assert_raises
  import numpy
  import theano
  from theano import tensor
  import theano.tensor.slinalg
  from theano.tests.breakpoint import PdbBreakpoint
  from theano.tests import unittest_tools, test_ifelse
  from theano.tensor.tests import test_basic
  from theano.gof.opt import check_stack_trace
  import theano.gpuarray
  from ..None import basic_ops
  from ..type import GpuArrayType, gpuarray_shared_constructor, get_context
  from ..basic_ops import GpuAlloc, GpuAllocEmpty, GpuReshape, GpuFromHost, HostFromGpu, host_from_gpu
  from ..blas import GpuGemm
  from ..elemwise import GpuCAReduceCuda, GpuCAReduceCPY, GpuElemwise, Elemwise, max_inputs_to_GpuElemwise
  from ..dnn import GpuDnnReduction
  from ..subtensor import GpuSubtensor
  from ..linalg import GpuCusolverSolve, cusolver_available, GpuCholesky
  from .config import mode_with_gpu, mode_without_gpu, test_ctx_name, SkipTest
  import unittest
  from theano.tensor.nnet import abstract_conv
  from theano.gpuarray import dnn, blas, opt
label_desc: Use image node_id 7 for calling a global function with example usage: test_reduce() without return types