code: def add(x_gpu, y_gpu):
      """
      Adds two scalars, vectors, or matrices.
  
      The numpy broadcasting rules apply so this would yield the same result
      as `x_gpu.get()` + `y_gpu.get()` in host code.
  
      Parameters
      ----------
      x_gpu, y_gpu : pycuda.gpuarray.GPUArray
          The arrays to be added.
  
      Returns
      -------
      out : pycuda.gpuarray.GPUArray
          Equivalent to `x_gpu.get()` + `y_gpu.get()`.
  
      Notes
      -----
      The `out` and `stream` options are not supported because `GPUArray.__add__`
      doesn't provide them.
      """
  
      return binaryop_2d("+", operator.add, True, x_gpu, y_gpu)
  
imports: from __future__ import absolute_import, division
  import atexit
  import numbers
  from string import Template
  import pycuda.driver
  import pycuda.gpuarray
  import pycuda.elementwise
  import pycuda.reduction
  import pycuda.scan
  import pycuda.tools
  from pycuda.tools import context_dependent_memoize, dtype_to_ctype
  from pycuda.compiler import SourceModule
  from pytools import memoize
  import numpy
  from .None import cuda
  from .None import cublas
  import sys
  import operator
label_desc: Use image node_id 24 for calling a global function with example usage: add(x_gpu, y_gpu) and returns: binaryop_2d