code: def dot(a, b, out=None):
      """Returns a dot product of two arrays.
  
      For arrays with more than one axis, it computes the dot product along the
      last axis of ``a`` and the second-to-last axis of ``b``. This is just a
      matrix product if the both arrays are 2-D. For 1-D arrays, it uses their
      unique axis as an axis to take dot product over.
  
      Args:
          a (cupy.ndarray): The left argument.
          b (cupy.ndarray): The right argument.
          out (cupy.ndarray): Output array.
  
      Returns:
          cupy.ndarray: The dot product of ``a`` and ``b``.
  
      .. seealso:: :func:`numpy.dot`
  
      """
      # TODO(okuta): check type
      return a.dot(b, out)
  
file_path: cupy/cupy/linalg/_product.py
imports: import collections.abc
  import numbers
  import numpy
  import cupy
  from cupy import _core
  from cupy._core import internal
  from cupy._core._gufuncs import _GUFunc
  from cupy.linalg import _solve
  from cupy.linalg import _util
label_desc: Use image node_id 1 for calling a global function with example usage: dot(a, b, out) and returns: a