code: def test_gpu_opt_dtypes():
      # Test if the returned samples are of the datatype specified
      for dtype in ["uint32", "float32", "int64", "float64"]:
          p = tensor.fmatrix()
          u = tensor.fvector()
          m = theano.sandbox.multinomial.MultinomialFromUniform(dtype)(
              p, u
          )
  
          f = function(
              [p, u], m, allow_input_downcast=True, mode=mode_with_gpu
          )
          assert any(
              [
                  type(node.op) is GPUAMultinomialFromUniform
                  for node in f.maker.fgraph.toposort()
              ]
          )
          pval = (
              np.arange(10000 * 4, dtype="float32").reshape((10000, 4))
              + 0.1
          )
          pval = pval / pval.sum(axis=1)[:, None]
          uval = np.ones_like(pval[:, 0]) * 0.5
          samples = f(pval, uval)
          assert samples.dtype == dtype, "%s != %s" % (
              samples.dtype,
              dtype,
          )
  
imports: from __future__ import absolute_import, print_function, division
  import os
  import numpy
  import unittest
  import theano
  from theano import config, function, tensor
  from theano.compat import PY3
  from theano.misc.pkl_utils import CompatUnpickler
  from theano.sandbox import multinomial
  from theano.sandbox.rng_mrg import MRG_RandomStreams
  import theano.tests.unittest_tools
  from .config import mode_with_gpu
  from ..multinomial import GPUAMultinomialFromUniform, GPUAChoiceFromUniform
label_desc: Use image node_id 4 for calling a global function with example usage: test_gpu_opt_dtypes() without return types